//>>built
define("dojox/lang/typed",["dojo","dijit","dojox","dojo/require!dojox/json/schema"],function(d,u,n){(function(){function p(b,c){var a=function(){var a=c();if(a&&a.parameters){for(var f=a.parameters,e=0;e<f.length;e++)arguments[e]=k(arguments[e],f[e],e.toString());if(a.additionalParameters)for(;e<arguments.length;e++)arguments[e]=k(arguments[e],a.additionalParameters,e.toString())}f=b.apply(this,arguments);a.returns&&k(f,a.returns);return f};a.__typedFunction__=!0;for(var f in b)a[f]=b[f];return a}
function r(b){return function(){return b}}function k(b,c,a){"function"==typeof b&&c&&!b.__typedFunction__&&(b=p(b,r(c)));c=g._validate(b,c,a);if(!c.valid){b="";c=c.errors;for(a=0;a<c.length;a++)b+=c[a].property+" "+c[a].message+"\n";throw new TypeError(b);}return b}var g,h="undefined"!=typeof d;if(h)d.provide("dojox.lang.typed"),d.require("dojox.json.schema"),g=n.json.schema;else{if("undefined"==typeof JSONSchema)throw Error("Dojo or JSON Schema library must be present");g=JSONSchema}var t=g.__defineGetter__,
m=function(b){if(b.__typedClass__)return b;var c=function(){var a,d,g=c.properties,e=c.methods;b.apply(this,arguments);this.__props__={};for(a in e)if(d=this[a]){if(!d.__typedFunction__){for(var l=this;!l.hasOwnProperty(a)&&l.__proto__;)l=l.__proto__;(function(a){l[a]=p(d,function(){return e[a]})})(a)}}else(function(a){this[a]=function(){throw new TypeError("The method "+a+" is defined but not implemented");}})(a);if(t){var h=this;for(a in g)d=this[a],this.hasOwnProperty(a)&&(this.__props__[a]=d),
function(a){delete h[a];h.__defineGetter__(a,function(){return a in this.__props__?this.__props__[a]:this.__proto__[a]});h.__defineSetter__(a,function(b){k(b,g[a],a);return this.__props__[a]=b})}(a)}k(this,c)};c.prototype=b.prototype;for(var a in b)c[a]=b[a];b.prototype.declaredClass&&h&&d.setObject(b.prototype.declaredClass,c);c.__typedClass__=!0;return c};if(h){if(n.lang.typed=m,d.config.typeCheckAllClasses){var q=d.declare;d.declare=function(b){var c=q.apply(this,arguments);return c=m(c)};d.mixin(d.declare,
q)}}else typed=m})()});