!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Proto=e()}(this,function(){var u="function"==typeof Object.getOwnPropertySymbols;function y(r,n,o,i){function e(){var t=this._super;this._super=c?n:r[o];var e=i.apply(this,arguments);return this._super=t,e}var c="function"==typeof n;return c&&(Object.keys(n).forEach(function(t){e[t]=n[t]}),u&&Object.getOwnPropertySymbols(n).forEach(function(t){e[t]=n[t]})),e}return{create:function(){var t=Object.create(this),e="string"==typeof t.__init?t.__init:"init";return"function"==typeof t[e]&&t[e].apply(t,arguments),t},mixin:function(t,e){function r(t){var e=Object.getOwnPropertyDescriptor(f,t);!c[t]&&e&&(c[t]=e)}for(var n=e||this,o=/\b_super\b/,i=Object.getPrototypeOf(n)||n.prototype,c={},f=t;Object.getOwnPropertyNames(f).forEach(r),u&&Object.getOwnPropertySymbols(f).forEach(r),(f=Object.getPrototypeOf(f))&&Object.getPrototypeOf(f););function p(t){var e=c[t];"function"==typeof e.value&&o.test(e.value)&&(e.value=y(i,n[t],t,e.value)),Object.defineProperty(n,t,e)}return Object.keys(c).forEach(p),u&&Object.getOwnPropertySymbols(c).forEach(p),n},extend:function(t,e){return this.mixin(t,Object.create(e||this))},proxy:function(t){var e=this[t],r=Array.prototype.slice.call(arguments,1);return r.unshift(this),e.bind.apply(e,r)}}});