!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.extripo=e():t.extripo=e()}(self,(function(){return t={196:(t,e)=>{function r(t){return function(e=null){return{[t]:new i(e)}}}class i{constructor(t){this.type=t}getType(t="",e=""){try{return new this.type,this.type}catch(r){return this.type(t,e)}}}var s={};s.arrayOf=r("arrayOf"),s.dictOf=r("dictOf"),s.instanceOf=r("instanceOf"),s.ignore=function(){return{ignore:!0}};class o{constructor(t="__export_config"){this.classes={ofFields:{},inArray:{},inDict:{}},this.defaultFieldsToIgnore=[t],this.fieldsToIgnore=Array.from(this.defaultFieldsToIgnore)}specifyClasses(t){return t?(Object.keys(t).forEach((e=>{e in this.classes&&Object.assign(this.classes[e],t[e])})),this):this}configFields(t){return Object.keys(t).forEach((e=>{var r=t[e];r.dictOf&&this.specifyClasses({inDict:{[e]:r.dictOf}}),r.arrayOf&&this.specifyClasses({inArray:{[e]:r.arrayOf}}),r.instanceOf&&this.specifyClasses({ofFields:{[e]:r.instanceOf}}),r.ignore&&this.ignoreFields([e])})),this}ignoreFields(t){return t&&(this.fieldsToIgnore=this.fieldsToIgnore.concat(t)),this}infectWithSetters(t){[this.specifyClasses,this.ignoreFields,this.configFields].forEach((e=>{t[e.name]=e.bind(this)}).bind(this))}}function n(t,e,r,i){var s=null;null!=r&&(s=t(e,r,i)),void 0!==s&&(e[i]=s)}function a(t,e){if(null==t)return null;var r=Object.assign({},t);return Object.keys(r).forEach((t=>{n(e,r,r[t],t)})),r}function c(t,e){if(null==t)return null;var r=Array.from(t);return r.forEach(((t,i)=>{n(e,r,t,i)})),r}class l{constructor(){this.__export_config=new o("__export_config"),this.__export_config.infectWithSetters(this)}specifyClasses(t){this.__export_config.specifyClasses(t)}ignoreFields(t){this.__export_config.ignoreFields(t)}configFields(t){this.__export_config.configFields(t)}static exportArray(t){return c(t,((t,e,r)=>(e.exportData&&(t[r]=e.exportData()),t[r])))}static importArray(t,e){return e?c(t,((t,r,i)=>{var s=e.getType(r,i);if(s)return(new s).importData(r)})):t}static exportDict(t){return a(t,((t,e,r)=>(e.exportData&&(t[r]=e.exportData()),t[r])))}static importDict(t,e){return e?a(t,((t,r,i)=>{var s=e.getType(r,i);if(s)return(new s).importData(r)})):t}static create(t={},...e){if(!t)return null;var r=new this.prototype.constructor(...e);return r.importData(t),r}static createFromJSON(t,e,...r){var i=new this.prototype.constructor(...r);return i.importJSON(t),i}copy(...t){var e=this.exportData(),r=new this.__proto__.constructor(...t);return r.importData(e),r}importData(t){if(!t)return this;t=Object.assign({},t);var e=this.__export_config;return null!=e.fieldsToIgnore&&e.fieldsToIgnore.forEach((e=>{null!=e&&delete t[e]})),Object.assign(this,t),null!=e.classes.inArray&&Object.keys(e.classes.inArray).forEach((r=>{r in t&&(this[r]=l.importArray(t[r],e.classes.inArray[r]))})),null!=e.classes.inDict&&Object.keys(e.classes.inDict).forEach((r=>{r in t&&(this[r]=l.importDict(t[r],e.classes.inDict[r]))})),null!=e.classes.ofFields&&Object.keys(e.classes.ofFields).forEach((r=>{if(null!==t[r]&&void 0!==t[r]){if(r in t)var i=e.classes.ofFields[r].getType();this[r]=(new i).importData(t[r])}else this[r]=t[r]})),this}exportData(){var t=(this,JSON.parse(JSON.stringify(this))),e=this.__export_config;return Object.keys(t).forEach((r=>{-1==e.fieldsToIgnore.indexOf(r)&&null!==t[r]&&void 0!==t[r]&&(this[r].exportData?t[r]=this[r].exportData():Array.isArray(this[r])?t[r]=l.exportArray(this[r]):"object"==typeof this[r]&&(t[r]=l.exportDict(this[r])))})),null!=e.fieldsToIgnore&&e.fieldsToIgnore.forEach((e=>{null!=e&&delete t[e]})),t}exportJSON(t=null,e=null){var r=this.exportData();return JSON.stringify(r,t,e)}importJSON(t){if(!t)return null;var e=JSON.parse(t);return this.importData(e)}}e.Exportable=l,e.ExportableConfig=o,e.TypeProvider=i,e.FC=s},138:(t,e,r)=>{const{Exportable:i,ExportableConfig:s,FC:o,TypeProvider:n}=r(196);t.exports={Exportable:i,ExportableConfig:s,FC:o,TypeProvider:n}}},e={},function r(i){var s=e[i];if(void 0!==s)return s.exports;var o=e[i]={exports:{}};return t[i](o,o.exports,r),o.exports}(138);var t,e}));