//>>built
define("dojox/app/utils/mvcModel",["dojo/_base/lang","dojo/Deferred","dojo/when","dojox/mvc/getStateful"],function(_1,_2,_3,_4){return function(_5,_6,_7){var _8={};var _9=new _2();var _a=function(_b){var _c={};for(var _d in _b){if(_d.charAt(0)!=="_"){_c[_d]=_b[_d];}}return (_c);};var _e;if(_6.store){_e={"store":_6.store.store,"query":_6.query?_a(_6.query):_6.store.query?_a(_6.store.query):{}};}else{if(_6.datastore){try{var _f=require("dojo/store/DataStore");}catch(e){throw new Error("When using datastore the dojo/store/DataStore module must be listed in the dependencies");}_e={"store":new _f({store:_6.datastore.store}),"query":_a(_6.query)};}else{if(_6.data){if(_6.data&&_1.isString(_6.data)){_6.data=_1.getObject(_6.data);}_e={"data":_6.data,query:{}};}else{console.warn("mvcModel: Missing parameters.");}}}var _10=_5[_7].type?_5[_7].type:"dojox/mvc/EditStoreRefListController";try{var _11=require(_10);}catch(e){throw new Error(_10+" must be listed in the dependencies");}var _12=new _11(_e);var _13;try{if(_12.queryStore){_13=_12.queryStore(_e.query);}else{var _14=_12._refSourceModelProp||_12._refModelProp||"model";_12.set(_14,_4(_e.data));_13=_12;}}catch(ex){_9.reject("load mvc model error.");return _9.promise;}_3(_13,_1.hitch(this,function(){_8=_12;_9.resolve(_8);return _8;}),function(){_9.reject("load model error.");});return _9;};});