@txnlab/use-wallet 0.1.14 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/algod/index.d.ts +3 -0
- package/dist/cjs/clients/algosigner.d.ts +3 -6
- package/dist/cjs/clients/base.d.ts +4 -13
- package/dist/cjs/clients/defly.d.ts +4 -11
- package/dist/cjs/clients/exodus.d.ts +3 -6
- package/dist/cjs/clients/index.d.ts +14 -404
- package/dist/cjs/clients/kmd.d.ts +3 -6
- package/dist/cjs/clients/myalgowallet.d.ts +4 -7
- package/dist/cjs/clients/perawallet.d.ts +4 -11
- package/dist/cjs/clients/walletconnect.d.ts +5 -17
- package/dist/cjs/index.js +139 -2377
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/media/audio.d.ts +1 -1
- package/dist/cjs/utils/index.d.ts +0 -2
- package/dist/esm/algod/index.d.ts +3 -0
- package/dist/esm/clients/algosigner.d.ts +3 -6
- package/dist/esm/clients/base.d.ts +4 -13
- package/dist/esm/clients/defly.d.ts +4 -11
- package/dist/esm/clients/exodus.d.ts +3 -6
- package/dist/esm/clients/index.d.ts +14 -404
- package/dist/esm/clients/kmd.d.ts +3 -6
- package/dist/esm/clients/myalgowallet.d.ts +4 -7
- package/dist/esm/clients/perawallet.d.ts +4 -11
- package/dist/esm/clients/walletconnect.d.ts +5 -17
- package/dist/esm/index.js +125 -2345
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/media/audio.d.ts +1 -1
- package/dist/esm/utils/index.d.ts +0 -2
- package/dist/index.d.ts +296 -416
- package/package.json +1 -3
package/dist/cjs/index.js
CHANGED
|
@@ -3,33 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var algosdk = require('algosdk');
|
|
6
|
-
var
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var connect = require('@perawallet/connect');
|
|
8
|
+
var MyAlgoConnect = require('@randlabs/myalgo-connect');
|
|
9
|
+
var deflyConnect = require('@blockshake/defly-connect');
|
|
10
|
+
var WalletConnect = require('@walletconnect/client');
|
|
11
|
+
var QRCodeModal = require('algorand-walletconnect-qrcode-modal');
|
|
7
12
|
var utils = require('@json-rpc-tools/utils');
|
|
8
13
|
|
|
9
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
15
|
|
|
11
|
-
function _interopNamespace(e) {
|
|
12
|
-
if (e && e.__esModule) return e;
|
|
13
|
-
var n = Object.create(null);
|
|
14
|
-
if (e) {
|
|
15
|
-
Object.keys(e).forEach(function (k) {
|
|
16
|
-
if (k !== 'default') {
|
|
17
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () { return e[k]; }
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
n["default"] = e;
|
|
26
|
-
return Object.freeze(n);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
16
|
var algosdk__default = /*#__PURE__*/_interopDefaultLegacy(algosdk);
|
|
30
|
-
var
|
|
17
|
+
var MyAlgoConnect__default = /*#__PURE__*/_interopDefaultLegacy(MyAlgoConnect);
|
|
18
|
+
var WalletConnect__default = /*#__PURE__*/_interopDefaultLegacy(WalletConnect);
|
|
19
|
+
var QRCodeModal__default = /*#__PURE__*/_interopDefaultLegacy(QRCodeModal);
|
|
31
20
|
|
|
32
|
-
function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if("production"!==process.env.NODE_ENV){var i=Y[n],o=i?"function"==typeof i?i.apply(null,t):i:"unknown error nr: "+n;throw Error("[Immer] "+o)}throw Error("[Immer] minified error nr: "+n+(t.length?" "+t.map((function(n){return "'"+n+"'"})).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function r(n){return !!n&&!!n[Q]}function t(n){return !!n&&(function(n){if(!n||"object"!=typeof n)return !1;var r=Object.getPrototypeOf(n);if(null===r)return !0;var t=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return t===Object||"function"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&"symbol"==typeof e||r(e,n[e],n);})):n.forEach((function(t,e){return r(e,t,n)}));}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t;}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]});}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2);}function y(n){return null==n||"object"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function _(){return "production"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b("Patches"),n.u=[],n.s=[],n.v=r);}function O(n){g(n),n.p.forEach(S),n.p=null;}function g(n){n===U&&(U=n.l);}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0;}function P$1(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b("ES5").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b("Patches").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b("Patches").R(e,t,n.u,n.s);}return e.o}function A(e,i,o,a,c,s){if("production"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1;}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c);}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t);}function z(n,r){var t=n[Q];return (t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t);}}function k(n){n.P||(n.P=!0,n.l&&k(n.l));}function E(n){n.o||(n.o=l(n.t));}function R(n,r,t){var e=s(r)?b("MapSet").N(r,t):v(r)?b("MapSet").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b("ES5").J(r,t);return (t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b("ES5").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1;}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t));})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}var G,U,W="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),X="undefined"!=typeof Map,q="undefined"!=typeof Set,B="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,H=W?Symbol.for("immer-nothing"):((G={})["immer-nothing"]=!0,G),L=W?Symbol.for("immer-draftable"):"__$immer_draftable",Q=W?Symbol.for("immer-state"):"__$immer_state",Y={0:"Illegal state",1:"Immer drafts cannot have computed properties",2:"This object has been frozen and should not be mutated",3:function(n){return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+n},4:"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",5:"Immer forbids circular references",6:"The first or second argument to `produce` must be a function",7:"The third argument to `produce` must be a function or undefined",8:"First argument to `createDraft` must be a plain object, an array, or an immerable object",9:"First argument to `finishDraft` must be a draft returned by `createDraft`",10:"The given draft is already finalized",11:"Object.defineProperty() cannot be used on an Immer draft",12:"Object.setPrototypeOf() cannot be used on an Immer draft",13:"Immer only supports deleting array indices",14:"Immer only supports setting array indices and the 'length' property",15:function(n){return "Cannot apply patch, path doesn't resolve: "+n},16:'Sets cannot have "replace" patches.',17:function(n){return "Unsupported patch operation: "+n},18:function(n){return "The plugin for '"+n+"' has not been loaded into Immer. To enable the plugin, import and call `enable"+n+"()` when initializing your application."},20:"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",21:function(n){return "produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '"+n+"'"},22:function(n){return "'current' expects a draft, got: "+n},23:function(n){return "'original' expects a draft, got: "+n},24:"Patching reserved attributes like __proto__, prototype and constructor is not allowed"},Z=""+Object.prototype.constructor,nn="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t);})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?"value"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return !0;E(n),k(n);}return n.o[r]===t&&"number"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||"length"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11);},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12);}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)};})),on.deleteProperty=function(r,t){return "production"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return "production"!==process.env.NODE_ENV&&"length"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if("function"==typeof r&&"function"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return (t=i).call.apply(t,[r,n].concat(e))}))}}var f;if("function"!=typeof i&&n(6),void 0!==o&&"function"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1;}finally{v?O(c):g(c);}return "undefined"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P$1(n,c)}),(function(n){throw O(c),n})):(j(c,o),P$1(f,c))}if(!r||"object"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b("Patches").M(r,f,p,l),o(p,l);}return f}n(21,r);},this.produceWithPatches=function(n,r){if("function"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r;}));return "undefined"!=typeof Promise&&o instanceof Promise?o.then((function(n){return [n,t,i]})):[o,t,i]},"boolean"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),"boolean"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze);}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];"production"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P$1(void 0,i)},i.setAutoFreeze=function(n){this.F=n;},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r;},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&"replace"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b("Patches").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce;an.produceWithPatches.bind(an);an.setAutoFreeze.bind(an);an.setUseProxies.bind(an);an.applyPatches.bind(an);an.createDraft.bind(an);an.finishDraft.bind(an);
|
|
21
|
+
function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if("production"!==process.env.NODE_ENV){var i=Y[n],o=i?"function"==typeof i?i.apply(null,t):i:"unknown error nr: "+n;throw Error("[Immer] "+o)}throw Error("[Immer] minified error nr: "+n+(t.length?" "+t.map((function(n){return "'"+n+"'"})).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function r(n){return !!n&&!!n[Q]}function t(n){return !!n&&(function(n){if(!n||"object"!=typeof n)return !1;var r=Object.getPrototypeOf(n);if(null===r)return !0;var t=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return t===Object||"function"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&"symbol"==typeof e||r(e,n[e],n);})):n.forEach((function(t,e){return r(e,t,n)}));}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t;}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]});}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2);}function y(n){return null==n||"object"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function _(){return "production"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b("Patches"),n.u=[],n.s=[],n.v=r);}function O(n){g(n),n.p.forEach(S),n.p=null;}function g(n){n===U&&(U=n.l);}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0;}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b("ES5").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b("Patches").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b("Patches").R(e,t,n.u,n.s);}return e.o}function A(e,i,o,a,c,s){if("production"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1;}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c);}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t);}function z(n,r){var t=n[Q];return (t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t);}}function k(n){n.P||(n.P=!0,n.l&&k(n.l));}function E(n){n.o||(n.o=l(n.t));}function R(n,r,t){var e=s(r)?b("MapSet").N(r,t):v(r)?b("MapSet").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b("ES5").J(r,t);return (t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b("ES5").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1;}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t));})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}var G,U,W="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),X="undefined"!=typeof Map,q="undefined"!=typeof Set,B="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,H=W?Symbol.for("immer-nothing"):((G={})["immer-nothing"]=!0,G),L=W?Symbol.for("immer-draftable"):"__$immer_draftable",Q=W?Symbol.for("immer-state"):"__$immer_state",Y={0:"Illegal state",1:"Immer drafts cannot have computed properties",2:"This object has been frozen and should not be mutated",3:function(n){return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+n},4:"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",5:"Immer forbids circular references",6:"The first or second argument to `produce` must be a function",7:"The third argument to `produce` must be a function or undefined",8:"First argument to `createDraft` must be a plain object, an array, or an immerable object",9:"First argument to `finishDraft` must be a draft returned by `createDraft`",10:"The given draft is already finalized",11:"Object.defineProperty() cannot be used on an Immer draft",12:"Object.setPrototypeOf() cannot be used on an Immer draft",13:"Immer only supports deleting array indices",14:"Immer only supports setting array indices and the 'length' property",15:function(n){return "Cannot apply patch, path doesn't resolve: "+n},16:'Sets cannot have "replace" patches.',17:function(n){return "Unsupported patch operation: "+n},18:function(n){return "The plugin for '"+n+"' has not been loaded into Immer. To enable the plugin, import and call `enable"+n+"()` when initializing your application."},20:"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",21:function(n){return "produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '"+n+"'"},22:function(n){return "'current' expects a draft, got: "+n},23:function(n){return "'original' expects a draft, got: "+n},24:"Patching reserved attributes like __proto__, prototype and constructor is not allowed"},Z=""+Object.prototype.constructor,nn="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t);})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?"value"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return !0;E(n),k(n);}return n.o[r]===t&&"number"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||"length"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11);},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12);}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)};})),on.deleteProperty=function(r,t){return "production"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return "production"!==process.env.NODE_ENV&&"length"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if("function"==typeof r&&"function"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return (t=i).call.apply(t,[r,n].concat(e))}))}}var f;if("function"!=typeof i&&n(6),void 0!==o&&"function"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1;}finally{v?O(c):g(c);}return "undefined"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||"object"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b("Patches").M(r,f,p,l),o(p,l);}return f}n(21,r);},this.produceWithPatches=function(n,r){if("function"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r;}));return "undefined"!=typeof Promise&&o instanceof Promise?o.then((function(n){return [n,t,i]})):[o,t,i]},"boolean"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),"boolean"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze);}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];"production"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n;},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r;},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&"replace"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b("Patches").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce;an.produceWithPatches.bind(an);an.setAutoFreeze.bind(an);an.setUseProxies.bind(an);an.applyPatches.bind(an);an.createDraft.bind(an);an.finishDraft.bind(an);
|
|
33
22
|
|
|
34
23
|
/**
|
|
35
24
|
* The immer middleware turns the `set` method into a proxy for the immer `produce` method.
|
|
@@ -88,17 +77,17 @@ function createStore(createState) {
|
|
|
88
77
|
}
|
|
89
78
|
|
|
90
79
|
const isSSR = typeof window === "undefined" || !window.navigator || /ServerSideRendering|^Deno\//.test(window.navigator.userAgent);
|
|
91
|
-
const useIsomorphicLayoutEffect = isSSR ?
|
|
80
|
+
const useIsomorphicLayoutEffect = isSSR ? react.useEffect : react.useLayoutEffect;
|
|
92
81
|
function create(createState) {
|
|
93
82
|
const api = typeof createState === "function" ? createStore(createState) : createState;
|
|
94
83
|
const useStore = (selector = api.getState, equalityFn = Object.is) => {
|
|
95
|
-
const [, forceUpdate] =
|
|
84
|
+
const [, forceUpdate] = react.useReducer((c) => c + 1, 0);
|
|
96
85
|
const state = api.getState();
|
|
97
|
-
const stateRef =
|
|
98
|
-
const selectorRef =
|
|
99
|
-
const equalityFnRef =
|
|
100
|
-
const erroredRef =
|
|
101
|
-
const currentSliceRef =
|
|
86
|
+
const stateRef = react.useRef(state);
|
|
87
|
+
const selectorRef = react.useRef(selector);
|
|
88
|
+
const equalityFnRef = react.useRef(equalityFn);
|
|
89
|
+
const erroredRef = react.useRef(false);
|
|
90
|
+
const currentSliceRef = react.useRef();
|
|
102
91
|
if (currentSliceRef.current === void 0) {
|
|
103
92
|
currentSliceRef.current = selector(state);
|
|
104
93
|
}
|
|
@@ -117,7 +106,7 @@ function create(createState) {
|
|
|
117
106
|
equalityFnRef.current = equalityFn;
|
|
118
107
|
erroredRef.current = false;
|
|
119
108
|
});
|
|
120
|
-
const stateBeforeSubscriptionRef =
|
|
109
|
+
const stateBeforeSubscriptionRef = react.useRef(state);
|
|
121
110
|
useIsomorphicLayoutEffect(() => {
|
|
122
111
|
const listener = () => {
|
|
123
112
|
try {
|
|
@@ -140,7 +129,7 @@ function create(createState) {
|
|
|
140
129
|
return unsubscribe;
|
|
141
130
|
}, []);
|
|
142
131
|
const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;
|
|
143
|
-
|
|
132
|
+
react.useDebugValue(sliceToReturn);
|
|
144
133
|
return sliceToReturn;
|
|
145
134
|
};
|
|
146
135
|
Object.assign(useStore, api);
|
|
@@ -566,1031 +555,6 @@ const KMD_PASSWORD = process.env.KMD_PASSWORD ||
|
|
|
566
555
|
process.env.NEXT_PUBLIC_KMD_PASSWORD ||
|
|
567
556
|
"";
|
|
568
557
|
|
|
569
|
-
/*
|
|
570
|
-
* big.js v6.2.1
|
|
571
|
-
* A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.
|
|
572
|
-
* Copyright (c) 2022 Michael Mclaughlin
|
|
573
|
-
* https://github.com/MikeMcl/big.js/LICENCE.md
|
|
574
|
-
*/
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
/************************************** EDITABLE DEFAULTS *****************************************/
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
// The default values below must be integers within the stated ranges.
|
|
581
|
-
|
|
582
|
-
/*
|
|
583
|
-
* The maximum number of decimal places (DP) of the results of operations involving division:
|
|
584
|
-
* div and sqrt, and pow with negative exponents.
|
|
585
|
-
*/
|
|
586
|
-
var DP = 20, // 0 to MAX_DP
|
|
587
|
-
|
|
588
|
-
/*
|
|
589
|
-
* The rounding mode (RM) used when rounding to the above decimal places.
|
|
590
|
-
*
|
|
591
|
-
* 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)
|
|
592
|
-
* 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)
|
|
593
|
-
* 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)
|
|
594
|
-
* 3 Away from zero. (ROUND_UP)
|
|
595
|
-
*/
|
|
596
|
-
RM = 1, // 0, 1, 2 or 3
|
|
597
|
-
|
|
598
|
-
// The maximum value of DP and Big.DP.
|
|
599
|
-
MAX_DP = 1E6, // 0 to 1000000
|
|
600
|
-
|
|
601
|
-
// The maximum magnitude of the exponent argument to the pow method.
|
|
602
|
-
MAX_POWER = 1E6, // 1 to 1000000
|
|
603
|
-
|
|
604
|
-
/*
|
|
605
|
-
* The negative exponent (NE) at and beneath which toString returns exponential notation.
|
|
606
|
-
* (JavaScript numbers: -7)
|
|
607
|
-
* -1000000 is the minimum recommended exponent value of a Big.
|
|
608
|
-
*/
|
|
609
|
-
NE = -7, // 0 to -1000000
|
|
610
|
-
|
|
611
|
-
/*
|
|
612
|
-
* The positive exponent (PE) at and above which toString returns exponential notation.
|
|
613
|
-
* (JavaScript numbers: 21)
|
|
614
|
-
* 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.
|
|
615
|
-
*/
|
|
616
|
-
PE = 21, // 0 to 1000000
|
|
617
|
-
|
|
618
|
-
/*
|
|
619
|
-
* When true, an error will be thrown if a primitive number is passed to the Big constructor,
|
|
620
|
-
* or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a
|
|
621
|
-
* primitive number without a loss of precision.
|
|
622
|
-
*/
|
|
623
|
-
STRICT = false, // true or false
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
/**************************************************************************************************/
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
// Error messages.
|
|
630
|
-
NAME = '[big.js] ',
|
|
631
|
-
INVALID = NAME + 'Invalid ',
|
|
632
|
-
INVALID_DP = INVALID + 'decimal places',
|
|
633
|
-
INVALID_RM = INVALID + 'rounding mode',
|
|
634
|
-
DIV_BY_ZERO = NAME + 'Division by zero',
|
|
635
|
-
|
|
636
|
-
// The shared prototype object.
|
|
637
|
-
P = {},
|
|
638
|
-
UNDEFINED = void 0,
|
|
639
|
-
NUMERIC = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
/*
|
|
643
|
-
* Create and return a Big constructor.
|
|
644
|
-
*/
|
|
645
|
-
function _Big_() {
|
|
646
|
-
|
|
647
|
-
/*
|
|
648
|
-
* The Big constructor and exported function.
|
|
649
|
-
* Create and return a new instance of a Big number object.
|
|
650
|
-
*
|
|
651
|
-
* n {number|string|Big} A numeric value.
|
|
652
|
-
*/
|
|
653
|
-
function Big(n) {
|
|
654
|
-
var x = this;
|
|
655
|
-
|
|
656
|
-
// Enable constructor usage without new.
|
|
657
|
-
if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);
|
|
658
|
-
|
|
659
|
-
// Duplicate.
|
|
660
|
-
if (n instanceof Big) {
|
|
661
|
-
x.s = n.s;
|
|
662
|
-
x.e = n.e;
|
|
663
|
-
x.c = n.c.slice();
|
|
664
|
-
} else {
|
|
665
|
-
if (typeof n !== 'string') {
|
|
666
|
-
if (Big.strict === true && typeof n !== 'bigint') {
|
|
667
|
-
throw TypeError(INVALID + 'value');
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
// Minus zero?
|
|
671
|
-
n = n === 0 && 1 / n < 0 ? '-0' : String(n);
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
parse(x, n);
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
// Retain a reference to this Big constructor.
|
|
678
|
-
// Shadow Big.prototype.constructor which points to Object.
|
|
679
|
-
x.constructor = Big;
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
Big.prototype = P;
|
|
683
|
-
Big.DP = DP;
|
|
684
|
-
Big.RM = RM;
|
|
685
|
-
Big.NE = NE;
|
|
686
|
-
Big.PE = PE;
|
|
687
|
-
Big.strict = STRICT;
|
|
688
|
-
Big.roundDown = 0;
|
|
689
|
-
Big.roundHalfUp = 1;
|
|
690
|
-
Big.roundHalfEven = 2;
|
|
691
|
-
Big.roundUp = 3;
|
|
692
|
-
|
|
693
|
-
return Big;
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
/*
|
|
698
|
-
* Parse the number or string value passed to a Big constructor.
|
|
699
|
-
*
|
|
700
|
-
* x {Big} A Big number instance.
|
|
701
|
-
* n {number|string} A numeric value.
|
|
702
|
-
*/
|
|
703
|
-
function parse(x, n) {
|
|
704
|
-
var e, i, nl;
|
|
705
|
-
|
|
706
|
-
if (!NUMERIC.test(n)) {
|
|
707
|
-
throw Error(INVALID + 'number');
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
// Determine sign.
|
|
711
|
-
x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;
|
|
712
|
-
|
|
713
|
-
// Decimal point?
|
|
714
|
-
if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');
|
|
715
|
-
|
|
716
|
-
// Exponential form?
|
|
717
|
-
if ((i = n.search(/e/i)) > 0) {
|
|
718
|
-
|
|
719
|
-
// Determine exponent.
|
|
720
|
-
if (e < 0) e = i;
|
|
721
|
-
e += +n.slice(i + 1);
|
|
722
|
-
n = n.substring(0, i);
|
|
723
|
-
} else if (e < 0) {
|
|
724
|
-
|
|
725
|
-
// Integer.
|
|
726
|
-
e = n.length;
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
nl = n.length;
|
|
730
|
-
|
|
731
|
-
// Determine leading zeros.
|
|
732
|
-
for (i = 0; i < nl && n.charAt(i) == '0';) ++i;
|
|
733
|
-
|
|
734
|
-
if (i == nl) {
|
|
735
|
-
|
|
736
|
-
// Zero.
|
|
737
|
-
x.c = [x.e = 0];
|
|
738
|
-
} else {
|
|
739
|
-
|
|
740
|
-
// Determine trailing zeros.
|
|
741
|
-
for (; nl > 0 && n.charAt(--nl) == '0';);
|
|
742
|
-
x.e = e - i - 1;
|
|
743
|
-
x.c = [];
|
|
744
|
-
|
|
745
|
-
// Convert string to array of digits without leading/trailing zeros.
|
|
746
|
-
for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
return x;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
/*
|
|
754
|
-
* Round Big x to a maximum of sd significant digits using rounding mode rm.
|
|
755
|
-
*
|
|
756
|
-
* x {Big} The Big to round.
|
|
757
|
-
* sd {number} Significant digits: integer, 0 to MAX_DP inclusive.
|
|
758
|
-
* rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
|
|
759
|
-
* [more] {boolean} Whether the result of division was truncated.
|
|
760
|
-
*/
|
|
761
|
-
function round(x, sd, rm, more) {
|
|
762
|
-
var xc = x.c;
|
|
763
|
-
|
|
764
|
-
if (rm === UNDEFINED) rm = x.constructor.RM;
|
|
765
|
-
if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {
|
|
766
|
-
throw Error(INVALID_RM);
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
if (sd < 1) {
|
|
770
|
-
more =
|
|
771
|
-
rm === 3 && (more || !!xc[0]) || sd === 0 && (
|
|
772
|
-
rm === 1 && xc[0] >= 5 ||
|
|
773
|
-
rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))
|
|
774
|
-
);
|
|
775
|
-
|
|
776
|
-
xc.length = 1;
|
|
777
|
-
|
|
778
|
-
if (more) {
|
|
779
|
-
|
|
780
|
-
// 1, 0.1, 0.01, 0.001, 0.0001 etc.
|
|
781
|
-
x.e = x.e - sd + 1;
|
|
782
|
-
xc[0] = 1;
|
|
783
|
-
} else {
|
|
784
|
-
|
|
785
|
-
// Zero.
|
|
786
|
-
xc[0] = x.e = 0;
|
|
787
|
-
}
|
|
788
|
-
} else if (sd < xc.length) {
|
|
789
|
-
|
|
790
|
-
// xc[sd] is the digit after the digit that may be rounded up.
|
|
791
|
-
more =
|
|
792
|
-
rm === 1 && xc[sd] >= 5 ||
|
|
793
|
-
rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&
|
|
794
|
-
(more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||
|
|
795
|
-
rm === 3 && (more || !!xc[0]);
|
|
796
|
-
|
|
797
|
-
// Remove any digits after the required precision.
|
|
798
|
-
xc.length = sd;
|
|
799
|
-
|
|
800
|
-
// Round up?
|
|
801
|
-
if (more) {
|
|
802
|
-
|
|
803
|
-
// Rounding up may mean the previous digit has to be rounded up.
|
|
804
|
-
for (; ++xc[--sd] > 9;) {
|
|
805
|
-
xc[sd] = 0;
|
|
806
|
-
if (sd === 0) {
|
|
807
|
-
++x.e;
|
|
808
|
-
xc.unshift(1);
|
|
809
|
-
break;
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
// Remove trailing zeros.
|
|
815
|
-
for (sd = xc.length; !xc[--sd];) xc.pop();
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
return x;
|
|
819
|
-
}
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
/*
|
|
823
|
-
* Return a string representing the value of Big x in normal or exponential notation.
|
|
824
|
-
* Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.
|
|
825
|
-
*/
|
|
826
|
-
function stringify(x, doExponential, isNonzero) {
|
|
827
|
-
var e = x.e,
|
|
828
|
-
s = x.c.join(''),
|
|
829
|
-
n = s.length;
|
|
830
|
-
|
|
831
|
-
// Exponential notation?
|
|
832
|
-
if (doExponential) {
|
|
833
|
-
s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;
|
|
834
|
-
|
|
835
|
-
// Normal notation.
|
|
836
|
-
} else if (e < 0) {
|
|
837
|
-
for (; ++e;) s = '0' + s;
|
|
838
|
-
s = '0.' + s;
|
|
839
|
-
} else if (e > 0) {
|
|
840
|
-
if (++e > n) {
|
|
841
|
-
for (e -= n; e--;) s += '0';
|
|
842
|
-
} else if (e < n) {
|
|
843
|
-
s = s.slice(0, e) + '.' + s.slice(e);
|
|
844
|
-
}
|
|
845
|
-
} else if (n > 1) {
|
|
846
|
-
s = s.charAt(0) + '.' + s.slice(1);
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
return x.s < 0 && isNonzero ? '-' + s : s;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
// Prototype/instance methods
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
/*
|
|
857
|
-
* Return a new Big whose value is the absolute value of this Big.
|
|
858
|
-
*/
|
|
859
|
-
P.abs = function () {
|
|
860
|
-
var x = new this.constructor(this);
|
|
861
|
-
x.s = 1;
|
|
862
|
-
return x;
|
|
863
|
-
};
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
/*
|
|
867
|
-
* Return 1 if the value of this Big is greater than the value of Big y,
|
|
868
|
-
* -1 if the value of this Big is less than the value of Big y, or
|
|
869
|
-
* 0 if they have the same value.
|
|
870
|
-
*/
|
|
871
|
-
P.cmp = function (y) {
|
|
872
|
-
var isneg,
|
|
873
|
-
x = this,
|
|
874
|
-
xc = x.c,
|
|
875
|
-
yc = (y = new x.constructor(y)).c,
|
|
876
|
-
i = x.s,
|
|
877
|
-
j = y.s,
|
|
878
|
-
k = x.e,
|
|
879
|
-
l = y.e;
|
|
880
|
-
|
|
881
|
-
// Either zero?
|
|
882
|
-
if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;
|
|
883
|
-
|
|
884
|
-
// Signs differ?
|
|
885
|
-
if (i != j) return i;
|
|
886
|
-
|
|
887
|
-
isneg = i < 0;
|
|
888
|
-
|
|
889
|
-
// Compare exponents.
|
|
890
|
-
if (k != l) return k > l ^ isneg ? 1 : -1;
|
|
891
|
-
|
|
892
|
-
j = (k = xc.length) < (l = yc.length) ? k : l;
|
|
893
|
-
|
|
894
|
-
// Compare digit by digit.
|
|
895
|
-
for (i = -1; ++i < j;) {
|
|
896
|
-
if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
// Compare lengths.
|
|
900
|
-
return k == l ? 0 : k > l ^ isneg ? 1 : -1;
|
|
901
|
-
};
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
/*
|
|
905
|
-
* Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,
|
|
906
|
-
* if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.
|
|
907
|
-
*/
|
|
908
|
-
P.div = function (y) {
|
|
909
|
-
var x = this,
|
|
910
|
-
Big = x.constructor,
|
|
911
|
-
a = x.c, // dividend
|
|
912
|
-
b = (y = new Big(y)).c, // divisor
|
|
913
|
-
k = x.s == y.s ? 1 : -1,
|
|
914
|
-
dp = Big.DP;
|
|
915
|
-
|
|
916
|
-
if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {
|
|
917
|
-
throw Error(INVALID_DP);
|
|
918
|
-
}
|
|
919
|
-
|
|
920
|
-
// Divisor is zero?
|
|
921
|
-
if (!b[0]) {
|
|
922
|
-
throw Error(DIV_BY_ZERO);
|
|
923
|
-
}
|
|
924
|
-
|
|
925
|
-
// Dividend is 0? Return +-0.
|
|
926
|
-
if (!a[0]) {
|
|
927
|
-
y.s = k;
|
|
928
|
-
y.c = [y.e = 0];
|
|
929
|
-
return y;
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
var bl, bt, n, cmp, ri,
|
|
933
|
-
bz = b.slice(),
|
|
934
|
-
ai = bl = b.length,
|
|
935
|
-
al = a.length,
|
|
936
|
-
r = a.slice(0, bl), // remainder
|
|
937
|
-
rl = r.length,
|
|
938
|
-
q = y, // quotient
|
|
939
|
-
qc = q.c = [],
|
|
940
|
-
qi = 0,
|
|
941
|
-
p = dp + (q.e = x.e - y.e) + 1; // precision of the result
|
|
942
|
-
|
|
943
|
-
q.s = k;
|
|
944
|
-
k = p < 0 ? 0 : p;
|
|
945
|
-
|
|
946
|
-
// Create version of divisor with leading zero.
|
|
947
|
-
bz.unshift(0);
|
|
948
|
-
|
|
949
|
-
// Add zeros to make remainder as long as divisor.
|
|
950
|
-
for (; rl++ < bl;) r.push(0);
|
|
951
|
-
|
|
952
|
-
do {
|
|
953
|
-
|
|
954
|
-
// n is how many times the divisor goes into current remainder.
|
|
955
|
-
for (n = 0; n < 10; n++) {
|
|
956
|
-
|
|
957
|
-
// Compare divisor and remainder.
|
|
958
|
-
if (bl != (rl = r.length)) {
|
|
959
|
-
cmp = bl > rl ? 1 : -1;
|
|
960
|
-
} else {
|
|
961
|
-
for (ri = -1, cmp = 0; ++ri < bl;) {
|
|
962
|
-
if (b[ri] != r[ri]) {
|
|
963
|
-
cmp = b[ri] > r[ri] ? 1 : -1;
|
|
964
|
-
break;
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
// If divisor < remainder, subtract divisor from remainder.
|
|
970
|
-
if (cmp < 0) {
|
|
971
|
-
|
|
972
|
-
// Remainder can't be more than 1 digit longer than divisor.
|
|
973
|
-
// Equalise lengths using divisor with extra leading zero?
|
|
974
|
-
for (bt = rl == bl ? b : bz; rl;) {
|
|
975
|
-
if (r[--rl] < bt[rl]) {
|
|
976
|
-
ri = rl;
|
|
977
|
-
for (; ri && !r[--ri];) r[ri] = 9;
|
|
978
|
-
--r[ri];
|
|
979
|
-
r[rl] += 10;
|
|
980
|
-
}
|
|
981
|
-
r[rl] -= bt[rl];
|
|
982
|
-
}
|
|
983
|
-
|
|
984
|
-
for (; !r[0];) r.shift();
|
|
985
|
-
} else {
|
|
986
|
-
break;
|
|
987
|
-
}
|
|
988
|
-
}
|
|
989
|
-
|
|
990
|
-
// Add the digit n to the result array.
|
|
991
|
-
qc[qi++] = cmp ? n : ++n;
|
|
992
|
-
|
|
993
|
-
// Update the remainder.
|
|
994
|
-
if (r[0] && cmp) r[rl] = a[ai] || 0;
|
|
995
|
-
else r = [a[ai]];
|
|
996
|
-
|
|
997
|
-
} while ((ai++ < al || r[0] !== UNDEFINED) && k--);
|
|
998
|
-
|
|
999
|
-
// Leading zero? Do not remove if result is simply zero (qi == 1).
|
|
1000
|
-
if (!qc[0] && qi != 1) {
|
|
1001
|
-
|
|
1002
|
-
// There can't be more than one zero.
|
|
1003
|
-
qc.shift();
|
|
1004
|
-
q.e--;
|
|
1005
|
-
p--;
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
|
-
// Round?
|
|
1009
|
-
if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);
|
|
1010
|
-
|
|
1011
|
-
return q;
|
|
1012
|
-
};
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
/*
|
|
1016
|
-
* Return true if the value of this Big is equal to the value of Big y, otherwise return false.
|
|
1017
|
-
*/
|
|
1018
|
-
P.eq = function (y) {
|
|
1019
|
-
return this.cmp(y) === 0;
|
|
1020
|
-
};
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
/*
|
|
1024
|
-
* Return true if the value of this Big is greater than the value of Big y, otherwise return
|
|
1025
|
-
* false.
|
|
1026
|
-
*/
|
|
1027
|
-
P.gt = function (y) {
|
|
1028
|
-
return this.cmp(y) > 0;
|
|
1029
|
-
};
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
/*
|
|
1033
|
-
* Return true if the value of this Big is greater than or equal to the value of Big y, otherwise
|
|
1034
|
-
* return false.
|
|
1035
|
-
*/
|
|
1036
|
-
P.gte = function (y) {
|
|
1037
|
-
return this.cmp(y) > -1;
|
|
1038
|
-
};
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
/*
|
|
1042
|
-
* Return true if the value of this Big is less than the value of Big y, otherwise return false.
|
|
1043
|
-
*/
|
|
1044
|
-
P.lt = function (y) {
|
|
1045
|
-
return this.cmp(y) < 0;
|
|
1046
|
-
};
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
/*
|
|
1050
|
-
* Return true if the value of this Big is less than or equal to the value of Big y, otherwise
|
|
1051
|
-
* return false.
|
|
1052
|
-
*/
|
|
1053
|
-
P.lte = function (y) {
|
|
1054
|
-
return this.cmp(y) < 1;
|
|
1055
|
-
};
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
/*
|
|
1059
|
-
* Return a new Big whose value is the value of this Big minus the value of Big y.
|
|
1060
|
-
*/
|
|
1061
|
-
P.minus = P.sub = function (y) {
|
|
1062
|
-
var i, j, t, xlty,
|
|
1063
|
-
x = this,
|
|
1064
|
-
Big = x.constructor,
|
|
1065
|
-
a = x.s,
|
|
1066
|
-
b = (y = new Big(y)).s;
|
|
1067
|
-
|
|
1068
|
-
// Signs differ?
|
|
1069
|
-
if (a != b) {
|
|
1070
|
-
y.s = -b;
|
|
1071
|
-
return x.plus(y);
|
|
1072
|
-
}
|
|
1073
|
-
|
|
1074
|
-
var xc = x.c.slice(),
|
|
1075
|
-
xe = x.e,
|
|
1076
|
-
yc = y.c,
|
|
1077
|
-
ye = y.e;
|
|
1078
|
-
|
|
1079
|
-
// Either zero?
|
|
1080
|
-
if (!xc[0] || !yc[0]) {
|
|
1081
|
-
if (yc[0]) {
|
|
1082
|
-
y.s = -b;
|
|
1083
|
-
} else if (xc[0]) {
|
|
1084
|
-
y = new Big(x);
|
|
1085
|
-
} else {
|
|
1086
|
-
y.s = 1;
|
|
1087
|
-
}
|
|
1088
|
-
return y;
|
|
1089
|
-
}
|
|
1090
|
-
|
|
1091
|
-
// Determine which is the bigger number. Prepend zeros to equalise exponents.
|
|
1092
|
-
if (a = xe - ye) {
|
|
1093
|
-
|
|
1094
|
-
if (xlty = a < 0) {
|
|
1095
|
-
a = -a;
|
|
1096
|
-
t = xc;
|
|
1097
|
-
} else {
|
|
1098
|
-
ye = xe;
|
|
1099
|
-
t = yc;
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
t.reverse();
|
|
1103
|
-
for (b = a; b--;) t.push(0);
|
|
1104
|
-
t.reverse();
|
|
1105
|
-
} else {
|
|
1106
|
-
|
|
1107
|
-
// Exponents equal. Check digit by digit.
|
|
1108
|
-
j = ((xlty = xc.length < yc.length) ? xc : yc).length;
|
|
1109
|
-
|
|
1110
|
-
for (a = b = 0; b < j; b++) {
|
|
1111
|
-
if (xc[b] != yc[b]) {
|
|
1112
|
-
xlty = xc[b] < yc[b];
|
|
1113
|
-
break;
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
// x < y? Point xc to the array of the bigger number.
|
|
1119
|
-
if (xlty) {
|
|
1120
|
-
t = xc;
|
|
1121
|
-
xc = yc;
|
|
1122
|
-
yc = t;
|
|
1123
|
-
y.s = -y.s;
|
|
1124
|
-
}
|
|
1125
|
-
|
|
1126
|
-
/*
|
|
1127
|
-
* Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only
|
|
1128
|
-
* needs to start at yc.length.
|
|
1129
|
-
*/
|
|
1130
|
-
if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;
|
|
1131
|
-
|
|
1132
|
-
// Subtract yc from xc.
|
|
1133
|
-
for (b = i; j > a;) {
|
|
1134
|
-
if (xc[--j] < yc[j]) {
|
|
1135
|
-
for (i = j; i && !xc[--i];) xc[i] = 9;
|
|
1136
|
-
--xc[i];
|
|
1137
|
-
xc[j] += 10;
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
xc[j] -= yc[j];
|
|
1141
|
-
}
|
|
1142
|
-
|
|
1143
|
-
// Remove trailing zeros.
|
|
1144
|
-
for (; xc[--b] === 0;) xc.pop();
|
|
1145
|
-
|
|
1146
|
-
// Remove leading zeros and adjust exponent accordingly.
|
|
1147
|
-
for (; xc[0] === 0;) {
|
|
1148
|
-
xc.shift();
|
|
1149
|
-
--ye;
|
|
1150
|
-
}
|
|
1151
|
-
|
|
1152
|
-
if (!xc[0]) {
|
|
1153
|
-
|
|
1154
|
-
// n - n = +0
|
|
1155
|
-
y.s = 1;
|
|
1156
|
-
|
|
1157
|
-
// Result must be zero.
|
|
1158
|
-
xc = [ye = 0];
|
|
1159
|
-
}
|
|
1160
|
-
|
|
1161
|
-
y.c = xc;
|
|
1162
|
-
y.e = ye;
|
|
1163
|
-
|
|
1164
|
-
return y;
|
|
1165
|
-
};
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
/*
|
|
1169
|
-
* Return a new Big whose value is the value of this Big modulo the value of Big y.
|
|
1170
|
-
*/
|
|
1171
|
-
P.mod = function (y) {
|
|
1172
|
-
var ygtx,
|
|
1173
|
-
x = this,
|
|
1174
|
-
Big = x.constructor,
|
|
1175
|
-
a = x.s,
|
|
1176
|
-
b = (y = new Big(y)).s;
|
|
1177
|
-
|
|
1178
|
-
if (!y.c[0]) {
|
|
1179
|
-
throw Error(DIV_BY_ZERO);
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
x.s = y.s = 1;
|
|
1183
|
-
ygtx = y.cmp(x) == 1;
|
|
1184
|
-
x.s = a;
|
|
1185
|
-
y.s = b;
|
|
1186
|
-
|
|
1187
|
-
if (ygtx) return new Big(x);
|
|
1188
|
-
|
|
1189
|
-
a = Big.DP;
|
|
1190
|
-
b = Big.RM;
|
|
1191
|
-
Big.DP = Big.RM = 0;
|
|
1192
|
-
x = x.div(y);
|
|
1193
|
-
Big.DP = a;
|
|
1194
|
-
Big.RM = b;
|
|
1195
|
-
|
|
1196
|
-
return this.minus(x.times(y));
|
|
1197
|
-
};
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
/*
|
|
1201
|
-
* Return a new Big whose value is the value of this Big negated.
|
|
1202
|
-
*/
|
|
1203
|
-
P.neg = function () {
|
|
1204
|
-
var x = new this.constructor(this);
|
|
1205
|
-
x.s = -x.s;
|
|
1206
|
-
return x;
|
|
1207
|
-
};
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
/*
|
|
1211
|
-
* Return a new Big whose value is the value of this Big plus the value of Big y.
|
|
1212
|
-
*/
|
|
1213
|
-
P.plus = P.add = function (y) {
|
|
1214
|
-
var e, k, t,
|
|
1215
|
-
x = this,
|
|
1216
|
-
Big = x.constructor;
|
|
1217
|
-
|
|
1218
|
-
y = new Big(y);
|
|
1219
|
-
|
|
1220
|
-
// Signs differ?
|
|
1221
|
-
if (x.s != y.s) {
|
|
1222
|
-
y.s = -y.s;
|
|
1223
|
-
return x.minus(y);
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1226
|
-
var xe = x.e,
|
|
1227
|
-
xc = x.c,
|
|
1228
|
-
ye = y.e,
|
|
1229
|
-
yc = y.c;
|
|
1230
|
-
|
|
1231
|
-
// Either zero?
|
|
1232
|
-
if (!xc[0] || !yc[0]) {
|
|
1233
|
-
if (!yc[0]) {
|
|
1234
|
-
if (xc[0]) {
|
|
1235
|
-
y = new Big(x);
|
|
1236
|
-
} else {
|
|
1237
|
-
y.s = x.s;
|
|
1238
|
-
}
|
|
1239
|
-
}
|
|
1240
|
-
return y;
|
|
1241
|
-
}
|
|
1242
|
-
|
|
1243
|
-
xc = xc.slice();
|
|
1244
|
-
|
|
1245
|
-
// Prepend zeros to equalise exponents.
|
|
1246
|
-
// Note: reverse faster than unshifts.
|
|
1247
|
-
if (e = xe - ye) {
|
|
1248
|
-
if (e > 0) {
|
|
1249
|
-
ye = xe;
|
|
1250
|
-
t = yc;
|
|
1251
|
-
} else {
|
|
1252
|
-
e = -e;
|
|
1253
|
-
t = xc;
|
|
1254
|
-
}
|
|
1255
|
-
|
|
1256
|
-
t.reverse();
|
|
1257
|
-
for (; e--;) t.push(0);
|
|
1258
|
-
t.reverse();
|
|
1259
|
-
}
|
|
1260
|
-
|
|
1261
|
-
// Point xc to the longer array.
|
|
1262
|
-
if (xc.length - yc.length < 0) {
|
|
1263
|
-
t = yc;
|
|
1264
|
-
yc = xc;
|
|
1265
|
-
xc = t;
|
|
1266
|
-
}
|
|
1267
|
-
|
|
1268
|
-
e = yc.length;
|
|
1269
|
-
|
|
1270
|
-
// Only start adding at yc.length - 1 as the further digits of xc can be left as they are.
|
|
1271
|
-
for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;
|
|
1272
|
-
|
|
1273
|
-
// No need to check for zero, as +x + +y != 0 && -x + -y != 0
|
|
1274
|
-
|
|
1275
|
-
if (k) {
|
|
1276
|
-
xc.unshift(k);
|
|
1277
|
-
++ye;
|
|
1278
|
-
}
|
|
1279
|
-
|
|
1280
|
-
// Remove trailing zeros.
|
|
1281
|
-
for (e = xc.length; xc[--e] === 0;) xc.pop();
|
|
1282
|
-
|
|
1283
|
-
y.c = xc;
|
|
1284
|
-
y.e = ye;
|
|
1285
|
-
|
|
1286
|
-
return y;
|
|
1287
|
-
};
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
/*
|
|
1291
|
-
* Return a Big whose value is the value of this Big raised to the power n.
|
|
1292
|
-
* If n is negative, round to a maximum of Big.DP decimal places using rounding
|
|
1293
|
-
* mode Big.RM.
|
|
1294
|
-
*
|
|
1295
|
-
* n {number} Integer, -MAX_POWER to MAX_POWER inclusive.
|
|
1296
|
-
*/
|
|
1297
|
-
P.pow = function (n) {
|
|
1298
|
-
var x = this,
|
|
1299
|
-
one = new x.constructor('1'),
|
|
1300
|
-
y = one,
|
|
1301
|
-
isneg = n < 0;
|
|
1302
|
-
|
|
1303
|
-
if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {
|
|
1304
|
-
throw Error(INVALID + 'exponent');
|
|
1305
|
-
}
|
|
1306
|
-
|
|
1307
|
-
if (isneg) n = -n;
|
|
1308
|
-
|
|
1309
|
-
for (;;) {
|
|
1310
|
-
if (n & 1) y = y.times(x);
|
|
1311
|
-
n >>= 1;
|
|
1312
|
-
if (!n) break;
|
|
1313
|
-
x = x.times(x);
|
|
1314
|
-
}
|
|
1315
|
-
|
|
1316
|
-
return isneg ? one.div(y) : y;
|
|
1317
|
-
};
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
/*
|
|
1321
|
-
* Return a new Big whose value is the value of this Big rounded to a maximum precision of sd
|
|
1322
|
-
* significant digits using rounding mode rm, or Big.RM if rm is not specified.
|
|
1323
|
-
*
|
|
1324
|
-
* sd {number} Significant digits: integer, 1 to MAX_DP inclusive.
|
|
1325
|
-
* rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
|
|
1326
|
-
*/
|
|
1327
|
-
P.prec = function (sd, rm) {
|
|
1328
|
-
if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {
|
|
1329
|
-
throw Error(INVALID + 'precision');
|
|
1330
|
-
}
|
|
1331
|
-
return round(new this.constructor(this), sd, rm);
|
|
1332
|
-
};
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
/*
|
|
1336
|
-
* Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places
|
|
1337
|
-
* using rounding mode rm, or Big.RM if rm is not specified.
|
|
1338
|
-
* If dp is negative, round to an integer which is a multiple of 10**-dp.
|
|
1339
|
-
* If dp is not specified, round to 0 decimal places.
|
|
1340
|
-
*
|
|
1341
|
-
* dp? {number} Integer, -MAX_DP to MAX_DP inclusive.
|
|
1342
|
-
* rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
|
|
1343
|
-
*/
|
|
1344
|
-
P.round = function (dp, rm) {
|
|
1345
|
-
if (dp === UNDEFINED) dp = 0;
|
|
1346
|
-
else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {
|
|
1347
|
-
throw Error(INVALID_DP);
|
|
1348
|
-
}
|
|
1349
|
-
return round(new this.constructor(this), dp + this.e + 1, rm);
|
|
1350
|
-
};
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
/*
|
|
1354
|
-
* Return a new Big whose value is the square root of the value of this Big, rounded, if
|
|
1355
|
-
* necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.
|
|
1356
|
-
*/
|
|
1357
|
-
P.sqrt = function () {
|
|
1358
|
-
var r, c, t,
|
|
1359
|
-
x = this,
|
|
1360
|
-
Big = x.constructor,
|
|
1361
|
-
s = x.s,
|
|
1362
|
-
e = x.e,
|
|
1363
|
-
half = new Big('0.5');
|
|
1364
|
-
|
|
1365
|
-
// Zero?
|
|
1366
|
-
if (!x.c[0]) return new Big(x);
|
|
1367
|
-
|
|
1368
|
-
// Negative?
|
|
1369
|
-
if (s < 0) {
|
|
1370
|
-
throw Error(NAME + 'No square root');
|
|
1371
|
-
}
|
|
1372
|
-
|
|
1373
|
-
// Estimate.
|
|
1374
|
-
s = Math.sqrt(x + '');
|
|
1375
|
-
|
|
1376
|
-
// Math.sqrt underflow/overflow?
|
|
1377
|
-
// Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.
|
|
1378
|
-
if (s === 0 || s === 1 / 0) {
|
|
1379
|
-
c = x.c.join('');
|
|
1380
|
-
if (!(c.length + e & 1)) c += '0';
|
|
1381
|
-
s = Math.sqrt(c);
|
|
1382
|
-
e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);
|
|
1383
|
-
r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);
|
|
1384
|
-
} else {
|
|
1385
|
-
r = new Big(s + '');
|
|
1386
|
-
}
|
|
1387
|
-
|
|
1388
|
-
e = r.e + (Big.DP += 4);
|
|
1389
|
-
|
|
1390
|
-
// Newton-Raphson iteration.
|
|
1391
|
-
do {
|
|
1392
|
-
t = r;
|
|
1393
|
-
r = half.times(t.plus(x.div(t)));
|
|
1394
|
-
} while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));
|
|
1395
|
-
|
|
1396
|
-
return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);
|
|
1397
|
-
};
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
/*
|
|
1401
|
-
* Return a new Big whose value is the value of this Big times the value of Big y.
|
|
1402
|
-
*/
|
|
1403
|
-
P.times = P.mul = function (y) {
|
|
1404
|
-
var c,
|
|
1405
|
-
x = this,
|
|
1406
|
-
Big = x.constructor,
|
|
1407
|
-
xc = x.c,
|
|
1408
|
-
yc = (y = new Big(y)).c,
|
|
1409
|
-
a = xc.length,
|
|
1410
|
-
b = yc.length,
|
|
1411
|
-
i = x.e,
|
|
1412
|
-
j = y.e;
|
|
1413
|
-
|
|
1414
|
-
// Determine sign of result.
|
|
1415
|
-
y.s = x.s == y.s ? 1 : -1;
|
|
1416
|
-
|
|
1417
|
-
// Return signed 0 if either 0.
|
|
1418
|
-
if (!xc[0] || !yc[0]) {
|
|
1419
|
-
y.c = [y.e = 0];
|
|
1420
|
-
return y;
|
|
1421
|
-
}
|
|
1422
|
-
|
|
1423
|
-
// Initialise exponent of result as x.e + y.e.
|
|
1424
|
-
y.e = i + j;
|
|
1425
|
-
|
|
1426
|
-
// If array xc has fewer digits than yc, swap xc and yc, and lengths.
|
|
1427
|
-
if (a < b) {
|
|
1428
|
-
c = xc;
|
|
1429
|
-
xc = yc;
|
|
1430
|
-
yc = c;
|
|
1431
|
-
j = a;
|
|
1432
|
-
a = b;
|
|
1433
|
-
b = j;
|
|
1434
|
-
}
|
|
1435
|
-
|
|
1436
|
-
// Initialise coefficient array of result with zeros.
|
|
1437
|
-
for (c = new Array(j = a + b); j--;) c[j] = 0;
|
|
1438
|
-
|
|
1439
|
-
// Multiply.
|
|
1440
|
-
|
|
1441
|
-
// i is initially xc.length.
|
|
1442
|
-
for (i = b; i--;) {
|
|
1443
|
-
b = 0;
|
|
1444
|
-
|
|
1445
|
-
// a is yc.length.
|
|
1446
|
-
for (j = a + i; j > i;) {
|
|
1447
|
-
|
|
1448
|
-
// Current sum of products at this digit position, plus carry.
|
|
1449
|
-
b = c[j] + yc[i] * xc[j - i - 1] + b;
|
|
1450
|
-
c[j--] = b % 10;
|
|
1451
|
-
|
|
1452
|
-
// carry
|
|
1453
|
-
b = b / 10 | 0;
|
|
1454
|
-
}
|
|
1455
|
-
|
|
1456
|
-
c[j] = b;
|
|
1457
|
-
}
|
|
1458
|
-
|
|
1459
|
-
// Increment result exponent if there is a final carry, otherwise remove leading zero.
|
|
1460
|
-
if (b) ++y.e;
|
|
1461
|
-
else c.shift();
|
|
1462
|
-
|
|
1463
|
-
// Remove trailing zeros.
|
|
1464
|
-
for (i = c.length; !c[--i];) c.pop();
|
|
1465
|
-
y.c = c;
|
|
1466
|
-
|
|
1467
|
-
return y;
|
|
1468
|
-
};
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
/*
|
|
1472
|
-
* Return a string representing the value of this Big in exponential notation rounded to dp fixed
|
|
1473
|
-
* decimal places using rounding mode rm, or Big.RM if rm is not specified.
|
|
1474
|
-
*
|
|
1475
|
-
* dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.
|
|
1476
|
-
* rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
|
|
1477
|
-
*/
|
|
1478
|
-
P.toExponential = function (dp, rm) {
|
|
1479
|
-
var x = this,
|
|
1480
|
-
n = x.c[0];
|
|
1481
|
-
|
|
1482
|
-
if (dp !== UNDEFINED) {
|
|
1483
|
-
if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {
|
|
1484
|
-
throw Error(INVALID_DP);
|
|
1485
|
-
}
|
|
1486
|
-
x = round(new x.constructor(x), ++dp, rm);
|
|
1487
|
-
for (; x.c.length < dp;) x.c.push(0);
|
|
1488
|
-
}
|
|
1489
|
-
|
|
1490
|
-
return stringify(x, true, !!n);
|
|
1491
|
-
};
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
/*
|
|
1495
|
-
* Return a string representing the value of this Big in normal notation rounded to dp fixed
|
|
1496
|
-
* decimal places using rounding mode rm, or Big.RM if rm is not specified.
|
|
1497
|
-
*
|
|
1498
|
-
* dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.
|
|
1499
|
-
* rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
|
|
1500
|
-
*
|
|
1501
|
-
* (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.
|
|
1502
|
-
* (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.
|
|
1503
|
-
*/
|
|
1504
|
-
P.toFixed = function (dp, rm) {
|
|
1505
|
-
var x = this,
|
|
1506
|
-
n = x.c[0];
|
|
1507
|
-
|
|
1508
|
-
if (dp !== UNDEFINED) {
|
|
1509
|
-
if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {
|
|
1510
|
-
throw Error(INVALID_DP);
|
|
1511
|
-
}
|
|
1512
|
-
x = round(new x.constructor(x), dp + x.e + 1, rm);
|
|
1513
|
-
|
|
1514
|
-
// x.e may have changed if the value is rounded up.
|
|
1515
|
-
for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1518
|
-
return stringify(x, false, !!n);
|
|
1519
|
-
};
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
/*
|
|
1523
|
-
* Return a string representing the value of this Big.
|
|
1524
|
-
* Return exponential notation if this Big has a positive exponent equal to or greater than
|
|
1525
|
-
* Big.PE, or a negative exponent equal to or less than Big.NE.
|
|
1526
|
-
* Omit the sign for negative zero.
|
|
1527
|
-
*/
|
|
1528
|
-
P[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {
|
|
1529
|
-
var x = this,
|
|
1530
|
-
Big = x.constructor;
|
|
1531
|
-
return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);
|
|
1532
|
-
};
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
/*
|
|
1536
|
-
* Return the value of this Big as a primitve number.
|
|
1537
|
-
*/
|
|
1538
|
-
P.toNumber = function () {
|
|
1539
|
-
var n = Number(stringify(this, true, true));
|
|
1540
|
-
if (this.constructor.strict === true && !this.eq(n.toString())) {
|
|
1541
|
-
throw Error(NAME + 'Imprecise conversion');
|
|
1542
|
-
}
|
|
1543
|
-
return n;
|
|
1544
|
-
};
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
/*
|
|
1548
|
-
* Return a string representing the value of this Big rounded to sd significant digits using
|
|
1549
|
-
* rounding mode rm, or Big.RM if rm is not specified.
|
|
1550
|
-
* Use exponential notation if sd is less than the number of digits necessary to represent
|
|
1551
|
-
* the integer part of the value in normal notation.
|
|
1552
|
-
*
|
|
1553
|
-
* sd {number} Significant digits: integer, 1 to MAX_DP inclusive.
|
|
1554
|
-
* rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).
|
|
1555
|
-
*/
|
|
1556
|
-
P.toPrecision = function (sd, rm) {
|
|
1557
|
-
var x = this,
|
|
1558
|
-
Big = x.constructor,
|
|
1559
|
-
n = x.c[0];
|
|
1560
|
-
|
|
1561
|
-
if (sd !== UNDEFINED) {
|
|
1562
|
-
if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {
|
|
1563
|
-
throw Error(INVALID + 'precision');
|
|
1564
|
-
}
|
|
1565
|
-
x = round(new Big(x), sd, rm);
|
|
1566
|
-
for (; x.c.length < sd;) x.c.push(0);
|
|
1567
|
-
}
|
|
1568
|
-
|
|
1569
|
-
return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);
|
|
1570
|
-
};
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
/*
|
|
1574
|
-
* Return a string representing the value of this Big.
|
|
1575
|
-
* Return exponential notation if this Big has a positive exponent equal to or greater than
|
|
1576
|
-
* Big.PE, or a negative exponent equal to or less than Big.NE.
|
|
1577
|
-
* Include the sign for negative zero.
|
|
1578
|
-
*/
|
|
1579
|
-
P.valueOf = function () {
|
|
1580
|
-
var x = this,
|
|
1581
|
-
Big = x.constructor;
|
|
1582
|
-
if (Big.strict === true) {
|
|
1583
|
-
throw Error(NAME + 'valueOf disallowed');
|
|
1584
|
-
}
|
|
1585
|
-
return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);
|
|
1586
|
-
};
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
// Export
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
var Big = _Big_();
|
|
1593
|
-
|
|
1594
558
|
const icon$6 = "data:image/svg+xml;base64," +
|
|
1595
559
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4=";
|
|
1596
560
|
const PERA_WALLET = {
|
|
@@ -1601,7 +565,7 @@ const PERA_WALLET = {
|
|
|
1601
565
|
};
|
|
1602
566
|
|
|
1603
567
|
const icon$5 = "data:image/svg+xml;base64," +
|
|
1604
|
-
"PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgcng9IjE2IiBmaWxsPSJ1cmwoI3BhdHRlcm4wKSIvPgo8ZGVmcz4KPHBhdHRlcm4gaWQ9InBhdHRlcm4wIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+Cjx1c2UgeGxpbms6aHJlZj0iI2ltYWdlMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuMDU4NjA0MyAtMC4wNTEyMjcpIHNjYWxlKDAuMDAzNzczMjEpIi8+CjwvcGF0dGVybj4KPGltYWdlIGlkPSJpbWFnZTAiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVN3QUFBRXNDQVlBQUFCNWZZNTFBQUFnQUVsRVFWUjRBZTE5ZDVoVjFkWDMrOC8zNy9jbW1rQUVSU1ZmVEY1ck1ER3hSMDFNZVUwTUE4aFFSVUFwU2hVc0NJS0tZQlM3Mk1IZXNLQ0lnZ1VwMDN0bFlBWVlZSURwekF6VEdLWXc2M3QrKzNMR3krV1dVL1k1ZDU5ejFuNmVlZTZkZTg4OVorKzExLzd0dFZmOUwrTEdGR0FLTUFWY1FvSC9ja2svdVp0TUFhWUFVNEFZc0pnSm1BSk1BZGRRZ0FITE5WUEZIV1VLTUFVWXNKZ0htQUpNQWRkUWdBSExOVlBGSFdVS01BVVlzSmdIbUFKTUFkZFFnQUhMTlZQRkhXVUtNQVVZc0pnSG1BSk1BZGRRZ0FITE5WTVZuNDUyZEI2bnB0WnVPbEI3akhaVXRGRjJXUXR0SzJ5aXJ6TVAweWRKZGZUdXBtcDYvZXRLZXVHTFEvVE1wd2ZvaVRVVnRQeUQvZUlQNy9FWnZzTTF1QmEvd1c5eEQ5d0w5enhRZDB3OEE4L2l4aFNJUmdFR3JHalU4Y0YzQUltSzJnNEJIbXVUNjJqbHVrUDB3T3B5bXJSaUovMXJVUkZkT3plUExwMmVUUmRNenFUL2QyczZEUnFkU3IrNEpZWDZqMGloZmlPUzZlZkRrK2xudzVMcGRPMHZJWmxPUzBnU2Y2Y24vUGc1cnNHMStBMStpM3ZnWHJnbjd2Mjc2ZG5pV1hnbW5vMCt2TGp1RUtGUEFEYjBrUUhOQnd3Wlk0Z01XREVJNUpXdmU0NzMwc0c2WTdTbG9JbGVXVjlKOTcyK2h4S1hicWRyNXViUytaTXk2S3pScVFKTVRrc0lBQkNBNVl5UktYVG1xRlFhTkNhTnpobWJSdWVPUzZQQjQ5UHBsK1BUQmRBQWJNejgvZkxXd0Qxd0w5d1Q5OFl6OEN3OEU4OEd3S0V2ZUkrK25UOHBrNjZkbXl2NmpMNWpERnNMbThTWU1EWnUvcUFBQTVaSDV4bkh1S3pTRm5yam15cWE4Y0l1K3V0OUJXTFJBeEFnRFFFUUlPVUFKQUFZQW9oTUFwQVowTkw3RzRBYitvWStvcS9vc3liUllTd0FNb3h0NXNwZFlxelpwUzNpZU9uUmFmWDlzQml3UE1JQ2g1dTdoRjdvNlU4UDBOamxKWFRabmRsQ01nRTQ0U2cyTURFQVRGYWxJNzFBNDhSMUdBdUFiRUJpcWhnampxQ1F4aTY3SzRmR1BWWkNvTVcyb2lacWFPbnl5Q3p6TUJpd1hNb0RuZDI5bExlN2hWNzY4aEJOZUh3SFhUb3RXeHluc0dpaEk0SitDSktKRThDaDBqTXdab3dkTkFBdEJveE1FVG80ME9qbDlZY29mMDhyZFhYekVkS2xiTS9CejI2YXVQb2pYY0xDQmgzTzlmUHlhTkNZVkxFbyt3R2d4cVJaMWkycEJEeXkrZ0lwRExTQkxnd0FodmZYejgrbisxZnRvUTJaaHdrMDVlWWVDckNFcGZoY1ZUZDAwcHF0dFRUbG1WSWFNaTByc1BDR0pkUEFVZjZVb0t3Q0dTUXcwQTVIWllBWWFBcmFnc2JWaloyS2N3TjNqd0ZMUVI1b1BkcERHN01hYU1ZTFpYVHhIVmxDeVF3OWxKQ2lGRlNNV3dXUmVQMGVDbjNRVkhQTkFLMW52bEJHRzdNYnFLMmpSMEhPNEM0eFlDbkNBOUNxWkpZMjA1SzM5OUpWczNLRkRnYldzTFBIcFBsT0R4VXZBQU90UWZQK3Q2VFFWYk56NmFGMzlsSldhYk1pSE1MZEFBVVlzT0xNQjdXTm5iUjZZeFhkOUVDaE1OdER6d0x6UFhiL2VDMWN2ejhYZWkvTUFlWUNWc2QvTGl5a043K3BwdG9tUGpMR2Via3dZTVZyQW9yMnR0SENOOHJwdDFPenhNS0FUNUVmclhxcWd5UG1SUGl1SlNUVGtLbFpZczR3ZDl6aVF3R1dzQnltK3c5NWpUVHB5WjNDd3h1ZTNMRDBxYjVvdVg4QmFSZHpoVG1EZC83a0ozZlM1dnhHaDdtSEg4ZUE1UUFQUUlHN1prc3QzZnhnb2ZEVWhwSVhUTTlBNE01akwrWU9jd2pKNitZSGkrampyYlhVZm93RHR4MVlTbndrdEpQSUxlMDk5TnJYbFhUMW5OeStVQmd2ZVpyN0hYQXhsMXFvMERWemN1bjFEWlVFQ3k4Myt5akFFcFlOdEFYVHZ2cFZKVjA1SzFka0xVQllqTjhYdDlmSGp6bEdsZ3BZRjdGSnNWdUVEUXVMcllSeWlZcVFqM2UrcjZhclo1OEFxbEVNVkY0SHF0RHh3U2tWd0lVc0dPOXVxdUV3SUxsTGpJK0VzdWo1WlZvOTNYaGZ2dkNnWm9uS25icXBVUEN4OHYrQXhFQldER1NTV0o5ZUw0dk5mSDhmUGhKYVpJR3NzbVlhdmF5RStwMVF3bHBoY3Y2dDk0RHVqRnNDK2IxR0x5OFJpUWd0c3B2dmY4NkFaWklGcWhvNjZkN1g5Z2pIUWxpTVdKbnVQYkNSdFlHQU44QWp5Q0tCd0hYRWgzSXpSd0VHTElOMFEzTExWUnVyaE1NbmRCVXdjZitLdmRMWnFCQ0RCOEFqNEJYd0RCeFFFZDNReTFsdURLNCtEczB4UkxDY1hTMDBkSEdSY0I1RXlBWURGVXRWUnFVdzhBeDRCOENWc0tSWTVEUXp4SVErdjVnbExCME1BRGVGUjk3ZEo3elNrWkxFS0pQeTlReHM0WGdBdkhUMjJEUjY5TDE5N0FhaFl4M2lFZ2FzR0lSQ09hcnI1dVhSVDRjbWlYUzhMRlV4K0lRREh6T2ZnWmVRNGhtOGRjUDhmRW91Ym9yQmpmdzFBMVlFSGtDb3hlSzM5b3A4NGZCbVpxQmlvRElEU25wL0F4NkREeGZTQ3gzbE1KOElxNUlsckxDRXlTbHJFWlZZc1BPeFVwMkJTaS9vV0xrT0d5SjREVHdIM3kzb1M3bWRTZ0dXc0VKbzhzSVhCNFdZamlJR0xGVXhXRmtCSWJPL0JlL2hxSWlpdHR4T3BnQUQxZ2w2N0svcG9OSEx0dE5wUTVPRUlwVEJpc0hLTE9CWS9SMTREOWxQd1lzbzJZYXExOXdDRkdEQUlxSXYwK3Zwd3RzelJVWUZxOHpHdjJlZ2s4a0RTTmw4MFIyWjlGWEdZY1lzdGhJU0xmOWd2MGdSQW9YbnJ5YndZcE81MlBoZTF2a0pQSW5ZVkNqbC8vTmhoZTlCeTdjU1ZrMWpweEMzV2JGdWZWRXhNTmxMdzJDRi9QakhTcWpPeDdubGZRbFlxSVJ5K2N3Y2tVdWRGNXU5aTQzcEs1ZStweWNrMFpXemNpaTcxSjlXUk44QjF2cy8xTkM1WTlPRWlNMUhRTG1MaWNISmZucUNaM0U4aEF2RUI1dHJmSGRFOUJWZ0lRUkNpNXBuc0xKL2NUR0EyVU5qOEM0eVA0Q1hsNzIvejFlZzVRdkFRcnJhS1UrWDBrK0dKdEZnTHY3QXNaQXhNaXU0QldnMVI5T3B6NVQ2cGdpRzV3R3JycW1ML3IyNFNIZ1FjM0ZTZTNaOHR5eHdML1lUUEEzREVUSS8xQi9wOHJ5MDVXbkFnalBvOWZQeWhIS2RIVUVackx3SVdOcVlVS1g2ei9QejZVRHRNVStEbG1jQmEvditOcnJzcm14eHptZDlGWU9WdHJDOStnb2VoMDdyanpPeWFVZUZkeXRUZXhLd01uWTIwd1dUTTZrL3NpeXdNeWpyckR5aXM0b0Z0dUIxeENIQ016NjdyTm1Ua3BibkFBdjVxekJ4cU1yTFlNV1NWYXhGN3JYdk5kNC83N1owU2lrKzRqblE4aFJnYmM1dnBNSGowa1VPS3dZckJpdXZnWkhlOFlEM0J5U21pc0lvV3dvYVBRVmFuZ0dzSC9JYVJVb094RjB4V0RGWTZWM2NYcjBPYXdCckFhNFAyTWk5MGp3QldGc0xtOFRFTUZneFVIa1ZnTXlNS3hpMG9DcnhRbk05WUtWdVB5SkVYODYyd0dCbFpsRjcvVGNhYUdHY2FTWHUxMm01R3JDUXl2aTgyekpZWitVVEs1alh3Y1d1OFFHMG9OUDZ6Y1FNeW5ONTZtWFhBbGJKL2piaHVzRFdRSmFzN0Zyb1hyb3ZRQXRyQlM0UGJ2YlRjaVZnN2F2dW9OOU56MlkvSzVhczJNZk1BQThBdE9DYitQczdzd2xSSUc1c3JnT3NocFl1dW41K0hudXdHMkJVTDBrS1BCWnJFalZBQ3g3eGY3NG5ueHBidTEySFdhNENyTTd1WGhxNWRMc284dzNDTS9NeURaZ0hqUE1BMXM1cENVbWk2RXBYZDYrclFNdFZnRFhucFYwaU1wMloxRGlUTXMyWVpxRThnSFJMODE3WnpZQmxCd1dlL3ZRQXA0amhZeUJMMVJKNTRKZmpBNmxwbmx0NzBJNGxhOHM5WFNGaGZaNVNSLzFHSkF2bjBOQmRndjlueVlGNXdEd1BJRjE0dnhFcDlFVnF2UzBBSS91bXlnTldZWG1yY0F3OWEzUXFWMktXdUx2eUlqZS95TDFFTytTSnc5ckNtSXIydHNyR0YrbjNVeHF3R2xxNjZhclp1Vnd3Z29HS2o0STI4Z0NVOENoc2NmV2NYSUlWWHVXbUxHREJkbkhyNHp2b3RJUmtEbWEya1ZtOUpDM3dXTXhMalFITFlUSk5lR0tIeW5oRnlnS1dwbVJuSmpUUGhFdzdwcDFSSGtCKytHYy9PNkFzYUNrSldKc0xHa1VZd1RsYzRZYVBRaXhkT3NvRDU0eE5vek1TVXdnWlVGUnN5Z0ZXZFVNbi9YWnFWaUNnbVpuVlVXWTF1aHZ6OWQ2VDRLQ0VSNkQwcGRPenFhYXhVem5NVWc2d3hqMVdRcWNQWTcwVmc0SDN3TUF0Y3dwOUZ0YmdyZjlSVDUrbEZHQTkvL2xCOW1SbnFaS2xTa1Y0QVBxc2w5WWRVa3JLVWdhd3NrcGI2TXhScVNMTnNWdDJJdTRuUzBGZTVvR3p4NmJSb05HcGxLdFFEaTBsQUt2MWFBLzk2ZTY4Z0wrVklydUxseG1SeDhaQXE0Y0hvTStDZjlaMTgvS29yYU5IQ1VsTENjQmFzR29QSVJDVHF6UHpRdEt6a1BnYTUvZ0VheEpId3dXcnl4bXdRQUdZVDRIaWc5bUZnWFUzTEYwcnlRT292SU0xcWtJaGk3aEtXRGdLWGpNblYvaGM4YTdwM0s3SnRHWmFHK1VCcEZlK2RtNHV0Y2I1YUJoWHdIcm83YjFDM09TaklDOGdvd3VJcjNlV1o3U2o0Y1B2N0l2cjBUQnVnSld6SzJBVlJIb0xaajVubVkvcHpmUTJ3d1B3Z2o5clZDcmw3bTZKRzJqRkJiQ1FsdldtQndxby80Z1VWclN6M29ZM0xKZndBS1Fzck5sL0xTcWk3cDc0cEZhT0MyQzkrbFVsTzRpNmhFbk43TVQ4RzI5TGNMQWFydHBRR1JjcHkzSEFxbXJvRlBVRXRhUmh6TnplWm02ZVgrL05MOWJ1UmJkblVuVWNZZzBkQjZ5NUwrL2lIRmNzWGZFeDBNVThnS01ocXU3TWU5WDVBaGFPQWxaMldZdUlCSWRmQisrODN0dDVlVTc5TTZkWXd3aWx5OXZ0YkZwbFJ3RXJjZWwyNmpjOG1jSEt4YnNyZzVKL1FDbldYS01nNitobEpZN3FzaHdEckcreUdrVEZXWlFXaWtVSS9wNXB4RHlnUGc5Z0xRTzB2czF1Y0F5MEhBRXNtRUQvZG4rQmNPOW5SblNHRWJYQ0F0QTFtUDhMbEZiRHZkdzJiMWhJNXNlZEZOaGNXUktPT2U4STJjSGFkc3JOd1JIQSttaExyVkMwdTQzcDNkemYvcmVrME5SblN1bU5iNnBNLzczMmRTVU5tWnJscXBRLzJQVUhqa3FsSlcvdE5UMXUwT3p4anlwRWVUaytFY1RlckU1UFNDYXNjU2VhN1lEVmZ1eTRLQjgwTURGUSs4ek5JT0NXdm1QQlhuWlhOclYzSExmTVE1Tlc3SFNOM2hIV0swaFdJNWR1dHp4dTNPQ2FPWGxDc2V5V2VZOVhQNUZTR1hHR1I0OVo1N2RZRTJjN1lLM2VXTVZPb2c0ZkxYQVVlditIbWxoenIrdjdWOVpYRW5iUWVDMEdJODlGeGc5WXJtUWxuSnUxY2hmOWJKZzd4bTZFVG5aY2U5clFKQ0hSNm1JcUN4ZlpDbGhJK25YbHJCd2hvdHRCSkw3bnFlSTZqb0kzTFN5a251TnlRaWZ5ZHJlSXlzQ0RGVGVXQkh5RGt1bnVsK1g1Qm4yNHVWYmtObWMrTzVYUFFta0NxUjVGajl1UDJadm96MWJBZ2k3Z3B3bEpydGlkUXlmQWpmOUQzd0xBMmxZa3IwUVR4SHd3SW9KZVZhYkoyV1BTNkRjVE0raGczVEVMKy9mSlA5MWYwMEhuVGNnZ0R0Q1BEVmpnRFVqMmIzMWJkVElSSmY5bkcyQjFkQjRYdWE1WWQ2VnZzcTJDQVNRTUhGOG1QN2xUTW9zUTNmbGNtZEFOV2Uyam5iOUhmQnVLNzhwdVF4Y1hjYjQyblNvTjZMS1E2dnhZbDMyNkxOc0FhODNXV3Rmb1B1eGNTRTdkRzZrLzRIMWNlcUJkOXBxbHQ3K3JWdnBvTkhCVUNsMCtNNGVRRUZKMmUvS1RDclp3NndRczhEcktnMzJXVkNkN0d2cnVad3RnUVgveWp3Y0tlV2N5TU5GV2dFM29iNFltMGVLMzl2Wk5yTXczSlJWdEFnd0hqM05HV2pSS2k5TVRrZ2dicEIwdFkyY3pEVXhNRVM0T1J2dmx4K3ZQdUNXRi9ybXdrQ1NwVUUrWlVsc0FhMU5lSS9VYmtVSy9kR2pCK3BFeGdzZU02UGxMcG1SUjNaR3VVeVpZeGdkd0NyeGhmajZwZUx5SHpnNzVtV1FaR1VMcHBlbndZSDBNcGptL0Q3OTVRWStLdGI4bHZ6R1VsRkwrdHdXd0pqeStRM21kaDVjWURpWmxPSG5hMldCOVU4M0VEOHNsUEsyVGk0L1lPWFNhOHlLN054aFpML0NGbS9pRVBWV2pwUU5XeWY0MmdzV0dNektFMzRHTVRMeWVhMUVjQU5LUG5ZcE9vTUVuMjJxVkFpek55RERsbVZKYndRbzNYNXRjUnovam9IM2RFaWJXUG5TcU95cmFwTStOZE1CYTlHWTVLeWtkT2dyanlJMkZ0Q0h6c0hUR0NMMWhlZFZSa2M1YWxZMElDMkx3K0RUYVhTbmZ5QkE2OXNyRHgraC9KbVc0S2tSSnoyWm41elduSlNRVHNFQjJrd3BZalMxZEl2WnMwQmpPZDJVbk0rRGVrREFnZWp1VjN1TTREQ2tMQ21oQVlvcnVuZFl1R21Ec2NHTndzb0lMd24yZ0w3TnJURjY3THpEZzBtbloxTlRhTFJXenBBTFd1OTlYQytjeHJ4RmZ4ZkZBMG9FaU9IK1BjeFZNRnI1UnJvUjd3NW1qVTJuSXRDdzYzR3lQa1NIY0Nudis4NFBNMndaUERnanBlbTlUZFRoeW12NU1HbUQxOWhMOWUzRVJwNUF4T0tsbXdGQzRNU1FrMGQydnlBdEQwY05CNjlQcmxUQ21JSG9DTWFwT3RueVhoQ2laNFNlN2ZnT0RTTUxpWWlJNVVXSml1cVVCVnY3dVZzTE9wM3JNbVYyVDQrUjk3UWhEMGJQNEQ5VWZvLytaR0Y5ZERvd01mN2szbnpxNzdmT21Ea2NMbEthN2JsNGV4OFVhMkpDQkJYQzVLU2lYbDBaWkdtREJhUkdLTmljWHJoK2ZwZWx2bnZwRWZoaEt1SVVhK2hta2FJQkdQR2dQSXdQMGR0ODRtT0V5ZVB6M3ZyWkhpU054UEdodjlwbkFoSWZla2VmUUxBV3dFQkx4eHhrNUFrM05Eb3gvcDg4TkFzNmJWOHl5Snd3bGVIRkdldi9vZS92akVuS2xHUm5HTG5jMmgzZ3dIYjdPUEN3QWt4Mmk5ZkVxMWpRa3JDdG01aEF5dDhob1VnQ0xKMUwvQkZvRlpzUnFmV3hUR0lvZWh2byt0MUZZeTV6T3hBa2p3NkRScVZRbzhYaWhaN3pCMTlRMWRkSkZkMlFLUDBPcjgraW4zNlB3akN5cFdBcGczZmw4R1R2V0dUamJtMlhXL2lPUzZlYkZSWFFjRm80NE5ZVC9YSHhIbHFPTFZqTXk0RWdXN3pidXNSSVJlbUoyRHYzNE8wUklJQm1pakdZWnNPcVBkSWs0TmlpQy9UZ1pUbzFaaEtHTVRLR1U3ZmFHb2VoaHFzUkhuZlZKR2pRbWxjNmZsRWxWaHp2MWRNL1dhMTc5cXBKMXRRWTNaL2hrL1hacUZqVzBXSGREc1F4WW55RnNnZFBJMmdyV2tEQkFZeFNWVUtFNW1YSkZNekk4dC9hZ0NrTW5FWG9HTDNzdUJteUk1eEdSOFVWcXZlVTV0QXhZMDU0dFZjSTN4eWxKSng3UFFSZ0tkRWE3SzQ5YW5uQVpOMEN3TVN5RlR1aXhZR1M0ZW5hdU5LV3QxZkVqYzhXTjk2cVp1U0lldktuM21RQXNKSUswMml3QlZtTkx0eEQxT0JUSFBxVzdKbUU4OHU0K3EzUGQ5M3VyS3JBamJkMzB1K25aaEtPYVhvWTFleDI4cFNIRnkyb3k4alRCaGNjdGhUbk0wbDMyNzRBUlF4Q3EwMkl0Vk1jU1lDSG9GbjR4c2dmSDkvc1JBR0VXUmhpS2pQTS9GbjNtem1ZcDFVMlFRZ2g1ait5Y3EzNGprbW5va21LeUNyQWEySDJ5clk2K3piRmVwWGhUbkN5bGR0TGE3bnZERmFUZjhCVGFtR1dOL3BZQTY5N1g5N0QreXFBQzBpaGpJTmVWekRDVWhDVkZoRCtyN2NWMWgyeU5yVU1tQmh3NzAwcWFyWFpWL0I1K1FPZFB6cVFsYjF0M1lteHM3YVpMcDJVNUltRWE1UmVWcjRkTHpuMnZXN1AwbWdZczVGKzZkaTRYbXJTVFFiQmdiN3kzZ0RvbEpmWEg3dmJmLzA0U3g3bm1kbXVpT1dyL1FmcXpJeFFMeDJBd045eGxaTFduUGoxQS8rZHZXK2lXUitRVVdVV3hEMGlBZHM2LzErNk5ZUDNyN3M2enhNK21BU3RuVjR2SUZtQUh3M3B0b3N5TVI2U2FIWjRzNVFpRFJZOEszR0FXQktTaXVrbXFSZmNJYkZpb2tHSkg2bUFZR1VDenZWVnlqQXg3cXp2b1Z4UFN4Ymd2dkQyVGFocXR1MGU4OWEzYWhUbk04SnpkdjlGaUMxSHIwbXd6RFZpQmRCdTh3OWd4eVpBd29Cc2MrNWk4TUpRWFBqOG9ja2poM29qdmtsRVNhNjROYVpNMUl3TkNnR1MxNmMrVjlTbkpJUlZ0eUxLZThIRFhvWFpoSlZVbG9hRWRmR2pIUGNGN0s3OHc3NkppR3JER0xDK2gvallyWGUwZ21CdnVpVVVnTThxOXVxR1RMcGljU1pvMUY0bm9SajFxL1dpMFpvdjh0TW1RMkM2ZG5rM1FFOGxvMElIaGFLMmRCSERVWENnaEV5YXNqZi9MbGFFTUg0bUJHZU1zeElPYUFxeTZwaTY2ZUlxejRSbHVBQm9aZmRRa29IdGVsWmZyYXNGcXBLMU9FbGxLMFVkRUpWeHlSeFloU3NGS2cxOFk3aWRUeWdoVUQ1YVQ5QTNXeFdFUEZSRkNtclM1d1hINHIvY1ZTS215OCtqNysydzFQR2g5OXRLcjRMMHBXVlJ2TXZtaUtjRDZJZTlFQUt6TkZqSXZUWlRlc1VBS1F2NXc1QkdYMFRUUDdHQlFnWWtaVWhiS3NWbHBLSzMxdC91Uk5sbU9QeFlrSVlBSmNrL0phSituMUo5aXhRWWRJRzNKS0RpN3JhakpNUWRhdmZ5aituWFF6VUtQdXFYQUhPK1pBcXpIUDZybzB3bW9UaUMzOVErNXlwLzVURjZ1cTRrcmRvaEZDOGt0bUJZNEdpMTczN3FlNlA1VmN0SW1nNUdodC90T2dwOFV3QTcxQksrZG0wc0RScDRLcG5ENmZPdGI2eGxMT2EzU3lUd1Z6Ri9SM29QK0t6NnVNTFVubVFLc3hLWGJPUlZ5Q0FCRW15QzkzeUVNNWNwWjhzSlF0aFEwaWVOUXVCQWFTRE5ERjF2M3gwSjhtRlhuWVlBcDdqSHVQL0pxMmNGUERPQWZqdlo0MXBTbjVjUmxUbitPUTlQQzBUamFaNUR1eHl3enAwTTFERmlpTW81d211UHNETkVteGN4MzJIayszaWFuNURxT2F6Y3RMSXhZNlFXdUF6aDZJdTJ4bFZaUjIwRy92czFhMm1RYzB3SzVydVRVc2FzOWtiZHEwT2p3UEFxRHhoL3V5cWFXZHV0SjVUN2NYTU5aU0ExdTNwanIzMC9QcHFZMjQ0WVZ3NENWc2FOWmxDd1B0MnViV2FUOG00QllEZXNKMGcvTHluV0ZoUlFyWlRVa0RSU1dzTktnMlA3WG9rS2h5ekV6bDVxUlFXYXVxMFZ2bFBlNWNJVHJFM2dYRXFhTVZEMzdhenJvdkFucGRPNEozN0Z3eitQUFRqNDZndjZ3Qm1lWEdmZkhNZ3hZcjIrb1pQMlZ3UjBsRnNNaVZja3ZKQzBnZ0U5TGV6ZGRQak1uWnNFRVllSmZiYjNZSlhKMm13MEdEdVM2eXFBcVNVYUduUWZhaGRWU2N6Nk5SSHVBK1JOcnpPbFJRZ0VlUjJ2TVg2Um44ZWNuQXhib0FYNTV3MFRsSThPQWhjeUJuUC9xMUFrd3k1U1FNR1RudWtLQmlrajZtK0IrUWlHTjRxaFdNeGg4azlWZ09rd0YvWlNaNjJyeVV6dkRHaG1DeDQzM3NGUU5lNmc0Rkh0TS9iOWlUVVZNYVRiMCtYNy9IencvKzBYaldVZ05BVmFnK20raE5ETzIzeWNONDRja0FEUDdya055d2xCRUthNUpHWDFPb3RGb0ROMFJBSE9QeFJBWU9LWmVPRG5UY0NsM1ZKRythbll1dFVzcVVKQlUxQ1IwZHBxVGFMU3h5OUxoQWVFeWRyS2FKQnF0dzMwSFY1aC9MQ2cwdkZrYUFpekVZRjEwZXlhZHplZDFLZUkvd0FJU2hzeVM2L05mM1NOMmU4VE9oV09VME0rdzA4bFE5QTkvdU5pdzVSaEgwaytUNU9TNmdwRUJ1alFqNWVTaHc1T1JCUk11RkZmTnlxV3pScDNxUWhGS2IvNC93SmR3SUVWQkQ2TnhuWVlBSzYza0NDdmNKZXF2K25KZG1mVDZEVDIvb0tMTVdhUFRESG1lQTdEdWZ0bTZWLzFqSHhvci93VWpBOUxjV0QyT2FqUllzN1hXc0I0TmdIblBxOWJTbldqUG4vTVNxMHFNZ0RFVTd3TkhwVks2d2ZSQmhnRHI3ZStxV1g4bEViQWdYYTB5b1hqVUZrbm9LeXE2UUdxQTVLYVhlY0EwTjh6THQreGREcDh2NklYMDFPeURrUUZXT215QU1ob2NPT0cvQmo4MnZlUEdkUmo3OWZPc3BUdlIrcjgycGM2eVA1cVJ2bnZoV215VzczNXZMQXpMRUdBOWlOU3dYSERDMEtLSXhGaG5qRXlsUDkrVFQwalRJcU45bDl0QXFQOW0xTjBFNEFGZEZrSjRyTFREelYwaVhYYXM2a2w5Um9abjVUaHVvcy9QZnFiUHlCQTZGMGdTaUZDb0lnbTFEaEZLZGY0a2EvNW9vZjN6K3YvQWtpVnZHVXVvYUFpd3hqMjJnek0wR0pCZUlqRWNRQVdTME1aTTYybE9zR0FSZTRjWVBFZzRrWjRaN1hPWW1KSGZ5V29ic3l4MkJnOG91ekYrV1FVMU5LQXdtMThlN2cwbzNTV2pqVnpxYlBtemFIUHFodStnRnJqVllIU0Ric0RxN082MUxXR2JHNGdyczQrUWhFWXZrNWZyNnAzdnFpMloxUUdleUJsbHRTSEhGckl0UktJVnBDdWtmSlpaVUFNT3B3QWRJOGZnNFA0aEwvMkVKK1NFQkQyLzlxQ2xlUWp1bHgvZXcza1VSM0lqd2U2NkFRdm1jbVJyak9XUTV3ZENXeGtqamwrWXFQdzlyVmJ4UWZ5K3FiV2JmbjludHFYTW43QnV3YjNnNkRGcm9TcXBNWXd5ZlVZR0NRVTFNZmppZlcwaXJ6cG9hblpPY0lSRmZuWlVnTExha0VrVFk5VGpWbUcydjE3NkhiQUVsc0txQnYzaFlib0JTOHZoYlZSSDRpVUNXeDBMWEEwZ2djaXd5bW1MQzlZNVBVNmkwZnFPQllhRmxtc2hkUzM2QXcvN3krN01wa2d4ZkJpN3pJSWFxTnlEZW5kbXBTdlFCUHlNby9UbWZIUHBUclI1d0t1V05ocksvR2owNXU4Q1JpSHdIWFNJUmpadjNZQzFMclZlbEhYU1l3WGlDUWx2cGNOdS9wdUpHWFN3cmlPWXowMi8zeWZpMkRKRVFqNnJOSWNlNjVYMWgwejNSZnZoeENkUS91dkhoSGxhdjJBVi9NczkrUVRWZ295R25HdzR6c25ZUURIMnBlL0pxZnVJU2xKc21BclAveG92YUsrWU8raXgxbWZvajJmVkRWZ3ZmWW15VHFjeW92WndmbzA5U1pDRVpPUlMxeFk4d3FTczZHK0M1d3dnZzl4WlZ0dkw2dytkNGc4RnhvU2VEQ0U4TWhxcUwvLzlmdk5HaHVCeDR6M0E5SitMQ3FYVVAvd3E0N0FBYk43WVk2OEgwTjZvMFVNM1lLSGFMZndtUWllYi85YzNNVGdtWERFemgrQXpKS09oYWhIdWVlNDRmYytQTlU5SStYSFpYVG1XVTY1b3FvTmdQUTdBYXF5RlBONmg5SHB2RXpKUlJGYnV4eHByNlBmSXRJQ01DL3VxclV1K2RVZTY2T0k3TXFWSXZhSDk5T0wvd0pTSDN0RXYzZW9HckR1ZTVrUmxWaGdHeHc1NFk4dHFNS0dITzNxWjdTT2tJTVQyV1hYbUZHRXFzMzhNVTRGQ0hQcXhBa2xHaGlOdDNmU0h1M0lzR1JuQzBRZ0w1Nk10Y3VZSERyekJlZVREUFk4L0MyeTAyTXltUHFQZkowODNZQ0d5blZOb21KTm1jRTVIbkJ1Q3gyVzByek1QQzJsWDlyRURVb3VNekFsM1BsZlc1M0dQZTg2WFdGQURLV0dzR2huQ2dRV1U5ek5YR3M4ZUVHNCs0ZGZGNmhOOWF3V1lNdHhBMWd4ZGdBVkZLZndsWUk0UE45bjhXZVRKZ2VRQ0t4UXlDY2hvc0VUZE1EK2Y0Q2t2bSs0SUhKWnhkRU80QlJUUFdrRU5xMWxOTmJwcDJVMWplZE9ib1V1ZmEwZW45Y2lEN2Z2YkFsazRMTGhibUJtREczOER0UWI0V2E4dmxpN0FncS9QNzZabjYwcFo0a2FpMmRWbkxReEZWdjV3TE54Vkd5cUY4NlVkZlQ1N1RLb0lyMm13R0l5TkpIb0krZm0vTjIrVFdsQmo3a3Z5akF5aDlNUEdZallMcGdhbzJpdU1BamZlbXkrTzJLSFA0ZjlQM3R5eHFjR1BFRWQ5UFUwWFlHRm5RLzV2ZGhvOW1kaXhtQS8wZ2c2bjdHQzducm1JZVEzaTlZWk16Ykl0allrbURTS1EyVXJEZ3IxeWRxN29xeXdqUTk3dVZnRW9zb3dNNGVZT2VrWlVOSmZSSG55ei9CUnJhYmhuK3YwenJCRVUrVDFRcDg5NVZCZGdGZTlyRlRzbWRrMi9FMWp2K0NGZFFkZXk1RzFqd1ozUkZzdkQ3KzZ6Ulg4VFBDYm9Ydjd6a2ZYVXdkT2VLNU1Xb3dlYUlKUUpDdHJndnNwK2p5UHhLSlBWWEVMbjdmdmNFN1U3eHh2YjVHU1BTZlg3WVVQSFJvbGp0SjZtQzdDUVVSSGlNbTZzT2dGVTZSOHNZNWRNeVNLWXVXVTBCQXVEL25aTHVkQzNqWGpZZXVwZ1NKVnRraktKYnN4cUVHQmxOLzlCTndhWEJGUTJ0OXFnUmhuQzFhVmk0Z1htRkdzbHE3UlpGOGwxQVJaWGVqWU8xSkN1WHZ0YVRoWUF6Q1JNdnpDOVd3bEQwUVBteUNhTG1OSHF4azVkREdUM1JUOGFHY3hsb3RBejVyNXJ4cWNMVnhFQXBJdzIrY21kSXVWUDMvMGxaUHJ3MnIxZzZRNkVSdWxUUStnQ3JNOVQ2cVQ2L0hpTjZLSGpnZWYwRGZQenBPVzZTaWsrSWlZMTJCa3o5Sm15L2djRHdRM2ptMnc1aTlicXdnZm8yK0hHRUlsZXNHNHVlbFBPTVI0Skx6bE1KL1ptRDMvQ2RXbjZ3bk4wQWRiN1A5VFlyaitJeEVCdSt4d0xIajQ5Q05HUTBlQzdkZk9pSWtmemtFSDVMRFBQdkZrNjFCL3BFc2RxSEJtYzRnTTR6eUszR0hMRVcyMG9MSUlqajVWc0VrNk5PNTdQZ1c0U2RUVDFOTksyNU40QUFCOFBTVVJCVkYyQXRYcERGWWZsNkJEbmNWenJOenlGRWg4MVY0WTczSVRCKzlwcEowUklpRGMvV0VqV2wyeTRFZW4vYk5HYjVjS0Z3KzVqY1BCaUJiakF1RlI2d0xwbEYwVm1iM3JBZkpIWjRINTUrVDBBNjgxdnFuUXhoaTdBV3ZuRlFSWnRkUUFXR0IzR0NjVFR5V2pON1QzMHh4bXhDNkxLWnVaenhnV3lTdWcxTmNzWWErZzlkbGEwRS9vUmo0cktPTWJoT0NlalBmcmVQblp2aUxGMm9KdDkrVXQ5bVVKMEFSWUtjK0tZSUh0aGVPbCtrQUpBbzdrU0t0Qm9DMlhGeC9hRW9laWhPM1k5R1NXd3RMRVlmWjIwUWw5QlZEMWpNWG9OeG00a3ZpM2EyQkRoQUluVmJndW4wVEdxZEQwMkNPVGwxOU4wQVJiaXR4aXdvaXNQNFNVZXlIV2x6d0V1MXVUWUdZYWloMW5CUkFza2xMR1BOYzV3MzIvT2J4STZ1M2d0Y3VqTS9qQkRUbWFObHZZZUVhenRwQjVPei95cWRBMnc1Y2xQOVBuKzZRSXNaTFdVbWM1REpXTEo2Z3NzV1pCRVpiVlpMKzRTbTRTVCtwdGdXa0Q1akp4VHNnSzI5ZElGWHZLb0NBeFRkM0Ivbkh3UG9Cd3dNb1dROGxsR1E3NThTRzFPanNGTnp3SmdQYTdUV1ZrWFlDMTdud0VyR2dNZ2dQUHltVG5VY2xSZlBGU3NSWkJWMmtJbzVSM1B5QUxOc3JXbjhtaXM3a3I5SG9IVFRoc1p3czJ0MlBVL2xyTUJ3UUxHN2cyUlR5Z1FocFovc0Y4WEh6Rmd4VkFJaG1QbTBNL0EzREp6WGQzeVNMRkkveHY2SEtmL2h6TDBZNGs1dkdKeHBJeUNHckpvQkFuUFNOcVRhR1BiajFUV3Q2WEh4WUFnaXg1MjNrYzZZQ0cyVElWZHowNmltYjAzNHM5azVycUNvaHRBSVR2WGxabnhvUjkzdjJLOWpIMjB4Uno4SFhaWkhLM2pkUXdPcGhGQ29NNmZsRW1vZXlpakRWMVN4UG5rSWdnSHdCYXBSOElWckhRUHEzK0E1emwyNHFRaU9ib09aT3U4Wms2dU1tbEpVUHBkNUNycXNkOGpxN3pxcUtBeFFvT0NnU09lNzJWYVNtSHg1VTAvL0xFUUp4VFFSMC9UZFNSRTRRVGNOSjdNbzlxemhSdkRzR1JDNm1oWjdZWFBEem9haGhLTHBvUEhCYnkwZDFUb2k2UzNRZ2NvcHFIblFTbTBXUDF5Nm50SW1QZThKa2ZDUkFJQmJBRHhzbnc2UlRNeno4RzhQL09wUG4yaExzQmF1ZTRRS3cxRHhGa2NHYUFVbDVYckNzVWtrUmNJeFNETVRMcGR2d0V6eVhLaWpBUm9xZHVQQ0YrbHdlUFZrYTVBVHhoVGtHbTNzOXQ2RmxJVXFVV3gyak1WbTErNytNYklmYkV4b0NxWG5xWUxzRkQ4RWpjMTBna3ZYd3ZwQ2lYWGpWVDdpRFVaOTcyT2t1dEpTa2tZbUVNY2k2WTlLMCtLREtWRGIyOHZEVjNzYkt5a1h0N0Vob1NVTThWNzVWVHBudjNpTGw1SElScy81Z0t4dDFKRGN6ajQrZVJqQ3B3QUw1bWFSUWpPbGRFS3kxdEZUaURObFVEdmduTGlPb3dWTGh1eWNsdUYwdXVUYmJWS3F4dWdDcEdWSnVpejVEcXhPSjJZTnpjOUE1dmloNXYxVlN6U0pXRjlub0txenl4aGFVd0FTOWJyRytUbHVocjdtUDNaTkxXK0czMkZ6Z1h4a1hvVHJJVUNVclQva1Q3NWlsazVRcmRqdEY5T1hRKyt2KzBKNndWbVFRZFlIRG5WK01tYlA2emgwdFBMYk1vN2tlNDFqRGpuRk9PbzhweEFycXQ4YWJtdWtIY0tPNHdLYmd5UmFBenJGZ3dDc2h1TU9VN211b28wdm1pZkR4cVRTcGRPenliNGlNbG9JeC9aSGxjdi9taGpqY2QzNEh1UndFOW5IUUZkRWxZNkxCeWNJbGxZZUFBdUc3TGs1THBDTnMyLzNJT1NYZkVMUTlIRHBFam9oK0tnTXR2QnVtTWk5aEl4bUhyNkVLOXJJR0ZpUVcwcGFKUXlmQlM1WVBlR0g2VXMwQmRxQjcwU3ZDN0FLdHJiSnBLUXhUTlVKRjRNRy94Y2dCV0tJY2hxcXpaVTJWYXlLN2pmVnQvRElpclNKamZJUzV1TXJCWll1Q280aWNhaUQvUllDRStUMFZEOUJ3dlVpZXl4c2NhbHd2ZlEyd0swU21RV29VQm9nZC9QM2lBc2REbjV1K1ZZaktDdy95MUtkcm5BekkwK29xQkdqYVE4NzhnWEJsckN6MHVGUlJPckR5S2g0YUlpUWtJK3F3MHVFdGZOeXhNbmxsalA5Y1AzMkF6aHpuT3dYbDlFZ1M0SkMrZDNuT05SOU5BUFJBd2RvM0JqU0VpbXV5WG11a0w1TDlYMU54b2QwRTlabGpJcytKRkx0NHZpREc2UXJrQURiRmJuVFVpbmZkVWRWdkZLL1A3ZTEvYXdYK01KZmZpZzBXbDAyVjNaMU55dVQwZW9DN0N3Sy9pNVZEMThjV1RtdWtMNlhTd0M3QzRhS0tqNkt0dklzRDc5c0RLeGtrWm9EajlFV1FIdXlQZmZqOVBOQ042SGJ2elA5K1JUbDg3d0wxMkFoVzFoMkVQRnZnM2VoSVFCaTVhc2h2SlBXQUNxU3hqUUxVQnZ0MUdTa2VGbzUzRzY3dTQ4a1d2S0NGaW9jQzNtYTliS1hWSllvSzZwa3k2NkkxTTRwYW93dG5qMjRSY2pVd1MyNkNXc2JzQ2E4a3lwTDVPUURSeVZJaHduWlpWY1J4bDRXTjBBQnZGa0ZEM1BsbTFrZUhuOUlkY2NnMFBwYzlhb1ZMcDZUaTUxZEZvUDA4SGloTlcxM3dpMXJjT2hOTERqZi9DWWtYVFV1Z0VMT2hjL2h1ZWNucEFrN1NnZ3NtaytFTjlzbW5xWkRrZFdLTnNMOXNneE10UTJCcVNLczBhcmZ3d09SeU5zTUlnRHpKRlVZT1RWOVpYczNvQ3duR0hKaGtMY2RBUFdLK3NQK1k3QWdWeFhSVkpxMUdGWGZXOVRqU3RTVFd0R2h2bXZ5c2xVZ0xFdmZLTmNTRmNxWldNSUIwelJQa09zSnlwSXlXamI5N2NKSGFaYkxLWFI2R0xsTzdpMnZQcVYvcWdSM1lEMVpYcTlhNDR5Vmdpby9WYkxkWlZjcksrRWRpd21QdExXTFlvUndKeXZQVVBWVjFpRDRjYWkxOVFjYSt3N1VMSnJyRHVNRE5IbUJFZjVNY3ZsK09HaFVPdU45K1lyay9zczJyanQrZzVTSzJocXBPaXdic0RLMjkwaVVwLzR3ZUVORWdaRTFkdWYyaGxyTGVyK0hoa1ZvYnhYWGRFTzVrUS9uOUZaZGtrUEFTYXUyT0VLSTBPc2hZbmtnaGZma1VsMWtvTGVIM3h6cjlLQjM3SG9ZZlY3WUFrMngvdzkrdXQ0Nmdhc1EvWEg2TUxKbWE0d3hWc2xKS1FCNkhCa1ZQL0ZnaFk1dlNla2swclpOQ1BSYUdCaUNsMHhVMDZKSzR4OWMwR2paeVJ6TFZBWDhaOHkydmU1M3FGTkpINks5am5XMlVXM0cwdERyUnV3T3J1TzA1L3V6aE1leXRFNjRmYnZoUDVtYUJJdGZtdXZESjRVOTRBNUhNcDdOMGhYMG8wTUN3bzhGZXlMTUowSDN5eVh3aHVOTFYwMFpGb1dJY0RhN2V2R1RQK2hIb0hYZjFlMy9oQUMzWUNGR1JxN3ZFVHNsbVk2NTViZmFHRW9zc1QrN0xJV2tUN0ZEWEdZTURMY3ZLaElXaTFDdHhnWmpQQW02algrN2Y0Q2FZWVlWTGlHYWQ5SUg3eHlMZlJYNC85akxIV1BJY0JhOUdhNTUwTUtrRWxVWmhoS29HU1grZ3hwajVFaDIzTVNPVlFGb0pXczFOakl0T25YZWdsSXYyMzBKR01Jc043NnR0clRnSVV3RklRZ0llMkxqUFpsV3FCa2wrbzdvbVprbUNLeG9BYXFoYnZGeUdCMGZyRFEzdm0rV2dhTDBLNURSd1VBQWdpTjlzUHQxOE93aGNLNVJwb2h3RUt4QUs5Vy9vQkNGYm1salpoWW94RWFIdEhRK2FIa3VlcU1CZVdueklJYUNCS0d2NVViakF4bTVrWjRaMHZLYzMrOGwraC9IeWgwQlorWW9WV2szOENsQVhHRTZUdWFveTJqVTc0ekJGalZEWjBpTHhJWVBGSkgzUGc1SkF3d1llS2oyMDhoa05rUHREQVUxUlh0NkI4a0lVUXl5R296WGloempaSEJETDlDejNuNURIbDU3aDk5YjcvdmpvVklLSUI0U3FNcGl3d0IxdkhqdmZTUEJRVTBJTkZiVmcySTQ3Qlk1TzdXN3c4U2JYSFhOblVLZngwd3Rwa0Y0ZVJ2MEVmazVaSlZVQ056WjdOd2huU0RrY0VzblNFZFFQbWVWaUtuZ082Mm9pYVJkUmIzTmRzbnQvME9HUEtQQllVRUNkTklNd1JZdURGTTlGNktLY1RSQlNFWGMxNlNFNGtQR3NFaDhLZEQxYy9HQUNhSGRJWE1wN0xhaUllTGZSSFVDNTU1NmhNNUdUeGFqdmJRSCs3S2RrVXlSMW5BQ0F4QjJUT2p6VEJnZ2JtOVpOV0FhUHJyMnpLb29sWk9jcmFkTGdwRGtaM3I2b3RVZHhnWlpDdzY1SGtmOFVpeDBmVVc4ZnJwejViNXlyMEJHSUo2cDBhYlljQ0N5SS9qazFmRVYwZ1lLejZ1TUVxM2lOZFBja3V1cXhONnV3MlpjZ3Bxb0xMeE5YTnpQYWN1aUFSdTBPTWkzaEtsdTJTMER6ZlhlT3JrRW9sdStCellBUXpSVzNnaW1MNkdBYXNSNlpJOTRwMExLOFVmWitUb1RzOGFUTGh3NzdjV05oR2NMMVVIY3lqYWtmRlNaa0dObGVzQ3VhNVVOekpFVzBoR3Y0T2habDFhZlRoV01Qelp2cG9PT205Q0JwM3JNWU5XT0pyQ3MvOTNKa3VuR1FZc3pBU3NhUkNKdzNYR1RaOUJMTVhPSnFNaCt2Nm1oWVVDc0ZTbmdXWmtNQkowR28xRzFZMEI2L0VnRnhnWlpNNE45RERJenk2ckRWMWM1SXVzdnZCd0g3M01uRVhlRkdBaDg0RGI5VmlRaEc1Nm9GQmFpTVVIbTJ1RUtWL21nckRqWHBDQW9EQ2UrN0p4aFdla2hibGdkYm00cDUra0s4d05mQkp2bUo5dktCWXVFZzN4K1JOcktueVJjdzdZWVZZTll3cXdmc2hyRkJLV3l0V0tveTEySE5rQVdEakN5V2pON1QzMGh4azVyaWpkSkl3TUV6UG9nQ1Fqdy9aOWJTSTN1Ujg5dFJHaUErZlk0bjF0TXRpSU1sQ3dPTkU3K3VGd2F4QnJ6MHBoV2xPQVZkZlVSUmRQeVhKbEVuMUlBUkRsb1J5WDFiQmJRSGtmYm9KVSsweTJrV0hDNHp2bzV5NG9xR0hYUEVCYWtPVVdnaUlkVjgzTzlWejhaVER0c1dHaXhxVlp2ejlUZ0lXRlBtYVpPek0zd0xxRFAyVEJsTkhnRGdHM0NFeEU4TVNvK0I1R2hzdG55ak15UU5MdVB5SlplU09EblhQUmIwUXlUVndoYi9PRGI1S1gvQnhEYVEvOUZRcHdtRzJtQWV2NXRRZGRkOTRXVHFKRGsyalJtL0xDVU9CdzZxYVM2eDl0cVRYTEt5ZjlEZ1UxL242L3QzSmRoUzR1UGYvRDBBQ0xGMUpneTJocmsrczhEVmhZS3l1L09HU2FWS1lCQzNtZTNPYVBoVEFVcExoRjZJeU1oZ29xMERtNG9aQkEvMXVTNlo4TDVSa1pFR1VQNXRPenFMMThqZERKakpTbkQ2MnNQeWI4dTd3V3J3c2VnTTRQYXpCdnQvbEtUS1lCcTZQck9GMDcxMTBaU0tHL1FmVWZXUzF4NlhiaG5heTZkVXhUZEc2VFpHU0FOSEhabmQ3TGRXVVdXS0hIV3ZiK2ZsbHNSU01mMmU0Szl4aWo5RG96TVZVVTBrVWxlYlBOTkdEaGdmQkJjY3Q1RzJsZWtPNUZWaUZNcEtGQk9ocUFnZEdKYy9KNnpjZ3cyYWNGTlp5Z05VS2NibjZ3aUF6RzhVWmNzOCs1VU4yaWg4N0lJM2IvS212cHBTMEJGc0k2NERHdHA3UHh2RWJrdWhxV1RPdlQ1WVNoSE9zOExoTDlnVkhqT1M0OXo4YlJBaTRIcFFmbEdCbEVRUTBZR1h6Z2thMkh2cmdHM3VubjNaWWhpbzFFUkNFRFg2QkNGWTVPT0VMcDdZTWJyb09CWXFQRkFoNldBQ3NRcHBNdFN2V29TakJJR0NEVUxZK1k4NndOeDJkSW9ld0dOd1lZR2RCUG8ybG93NDFaK3d6Wk90eGlaSENTSjNIUytHU2JISU9HRnd1K29KelhwZE95Q1poaHBWa0NMRHg0K25OcVI1bERJUTdGT0l3RU1ocjhSeTZabXVXS1ZDRFlwZUh6VWlmSnlCQW9xSkhpdVoxZkJyQUJzTXlrUzRuRWsyNVN0K2loSDlRbmR6NVhGbW00dWorM0RGaWZwNmh0aGtXQUt2SlR5V29Qdm9WY1Ywa2lCYkNlaVlyWE5kQ3R3ZWZsd3kxeVlpVkJQNUhyYXJnNzhudzVUWGRZeksrZWt5dUx6U2lwK0VnZ21zUWp4MElBRnRJUFdXMldBZXR3YzVmWXhWVjBuQnc4UHFDL1diV2hrbEMwOHJ1Y0J0Ti8rRDE4bUtDcmNJUEpHWDFFSmxFVXdyQXlidngyVTE0alFSR01MSkdxR3htY0JpcnRlZEEzUVZjSXIvZE5FbmdOUWZtL21aZ2g3cWs5dzYydndBYndZa05MbDFXOElzdUFoUjdjOVh5WnNKaXBTRkRvY1hCK2hvTGM2aDlpb01DVXFyc3hhUE9Bc1dQbnR6cHU3ZmNNVnRHVjRERHVJSFd5Umk4cnI1ZzN0L0NaeG0rUlhuRmNucmxTVHJDOUZNQ0N0UkJITDFXRG9iSFFaUDFGbWhSVlA1YzFibFhuVmpXNlM2TzNSNDZDbUI5NEVueGowVHFvaVdaU0FLdjFhSTlJaEFjbHIyb014UDJKTGhVd2ZaZytkdkxBV2FOUzZZcVo4aW9NU1FFc29CK1UwVzdQa1dYbnhQRzlHUmo4eUFOd2dYbm9IWGxHTDJtQWhmZ2duTHU5NXV6bVJ5YmpNVE80eXVBQkxYYXdvTng4N0tCMkZOUmVwUUZXYnkvUnY1SGkxUU9wazJWTUZ0K0RGNzNmZVFCWWtMQkVYbVVoZ0pZMHdNTE5BaEg4N2toazUzZG00dkV6b05yTkExQVJ2YjlKbmgrZ2RNQnFiT21pSVZPemxBN1ZzWHVTK1A0TUJNd0Q2VFJvZENBVXA4bGlLSTUyRk5SZXBVcFl1T21pTjFHUVFQMkFhR1lxQmhibUFmdDRBQmdnTTFHbWJZQzFvOEsvUlFsNEFkaTNBSmkyN3FFdG5LdVJ6UU5ZSUx0Smw3RFFRVkdZd0FWcFozZ1J1R2NSOEZ5NVo2N2dSSDdiRXp0a1k1VzRueTJBaGVJRS9VYW9Yd0daRjRGN0ZnSFBsVHZtQ3A3K1dQdWI4eHZkQTFqSGUwbFVRV1lYQjNjd0dZTUJ6NU1zSHNDYS8rZWlRZ0lHMk5Gc2tiRFEwYldLcDUyUk5VRjhIMTdzekFNLzhnQUNuV1dra1lrRWRyWUJWbGQzTDkwd1AwOUVyL09FL2ppaFRBdW1oVmQ1QUhVVC9ueFBQbUh0MjlWc0F5eDArTDFOTmV6aWNDc3ZVSzh1VUI3WHlid05SOUVQTnN0SkV4MEo4R3dGTEZTb1FSWkdwQ2pteVQxNWNwa2VUQTh2OGNEQXhCUzZWbUpWcXJnQUZoNzZ4c1lxVnhSczhCTHo4RmdZREozbWdkT0dKdEhiMzFWSHdobHBuOXNxWWFHWGJSMDlMR1h4c1pBbGJBL3pBRkpuUTdvNjJtbStRS3BlUkxNZHNOQ1JEN2ZVc2k3THd3enI5RzdPejFOTGdvVHU2dU90OXVxdU5FQnpCTEM2ZTNycGIvY1YwQzljVUhpVUY0TmFpNEhuUSszNWdOL1YzKzh2SUt4eEo1b2pnSVdCSUtlenlQdnVvVnpWdkpqVVhrdzhQL2JPRDd6YXNhWmw1V3ZYQTNpT0FSWTZNMnBaaVJnZ001SzlqTVQwWmZvNndRTUFxOUhMU3ZUZ2pMUnJIQVdzM0YwdE5IQlVxaWRxclRuQkVQd01CaDVWZVFBWkdaQVNIYW5Sbld5T0FoWUdOdStWM1hSYVFwSm5hcTZweWxEY0x3WTd1M2dBOVJLeGh1ZS91dHRKckJMUGNoeXdxaHFPMFFXM1p4S1hCT01GWmRlQzR2dmF5MXRZdXhmZW5rblZqWjNlQnl5TThMV3ZLOW1abE4wYzJEZkxwVHp3MDZGSnRHcERsZU5naFFjNkxtSGhvVENCM3JTd2tQcVBTT0dqb1V1WmxxVVllNlVZRmVtTG8yQy9FY2wwODRPRjFHTlgvcGdZTUJnWHdFS2ZjbmExQ0tYZHVXUFRlS2RsMEdJZWNBRVBuRE0yVGFoeThoMVd0QWRqV053QUM1MVk4dlplY1RRRWNxdTRvM0NmZUY2WUJ3SThnRFg2azM4bjBkTDM5Z1hqaCtQdjR3cFlyVWQ3NkpvNXVYUUdlOEF6WVBPbXBUUVBZSTMrNmU0OGFqdmE0emhJQlQ4d3JvQ0ZqbXd0YkJMVm9nZVA0Nk1oNytZczBhbklBMWliQ01GSktqb1NqQjF4ZVI5M3dNS29GNndxNTZNaFN4aEtTeGdxQW9rVGZjSlJFRmJCQmF2TDR3SlFvUTlWQXJCYWdvNkdyTTlpS2NPSmhjalBpTTFuV0l0SVdIRE4zRHhxYVkvdlVWQURMaVVBQzUxSjNYNkVrQk1hbGdobXB0ak14RFJpR3RuTkExaUxBeEpUS0sya1djT0x1TDhxQTFpZ3hPTWZWZEJQaGlZeFlQSHhrSGxBQVI3QVdueGlUVVhjUVNxNEEwb0JGaHhLaHoxVUxESTYvR29DNzZCMjc2QjhmK2F4Y0R5QXRZZHlYU01lTG82YmcyZ3dTQVcvVndxdzBMRjlOUjEwL3FSTTRWUWFqcGo4R1M4eTVnSDdlQUI2SzJSVXVXQnlKbFhVZEFSamhSTHZsUU1zVU9XcmpNTWlCSUJkSGV4alRGNzBUTnR3UElDME1RaVoyNWgxV0FtQUN1MkVrb0NGVGo3eTdqNE9rRlpBanhHT3Fma3o3NElkdk5tWGY3QS9GQ2VVK1Y5WndJSSthL2pEeFhUNnNHUmlmWlozRndpRG54cHppeldHWWhJamwyNVhUbThWakpiS0FoWTZXZFhRU1pmZGxTMThRUmkwMUdCc0JoanZ6UVBXRmp6Wi96Z2poMnFibk05eEZReElzZDRyRFZqb1BOSXFRNWVGcEdIc1ZPcTl4Y0lBR044NXhackMyaG84UHAzeTl6aWI3amdXT0lYN1hubkFRcWUvU0trWGlrQk9SUk5mNW1adzhSNzlzYWFnWlA4aXRUNGNQaWozbVNzQUMxUjdkdTFCb1lSSGFTRmVPRXdENWdIclBJQzFoRGpCNTlZZVZBNllJblhJTllDRkFkejk4bTZSazRlWjFUcXpNZzJaaHJBSVlrMjVxYmtLc0xwNmVtbmNZeVdCcWp2c0NjK1NKcnQ5bU9JQktObFI5UVpyQ1d2S1RjMVZnQVhDTnJkMzA5OFhGSWpRQWJZY3NwVEFrcUl4SHNDYVFkak5QeDRvb0daRk1qQVlBVXpYQVJZR0IzZUhxMmJuQ205NEJpMWpETXNMM0wvMHdscEJFUW1zbmVvR3RkMFhJb0dZS3dFTGc5bGRlWlIrT3pWTCtJOHdhUGwzRVRJQTY1dDdyQkg0V2cyWmxrWGxsVWNqNFlIeW43c1dzRURaL0QwdDlPdmJNbWhBWWlwN3c3TSt4NVEreHcrQUI3RENHdm5OeEF3cUtGZmYxeW9hYXJvYXNEQ3cxSklqQlBNc0lzeFowdEszMi9waGtmSVlBN3lBTlRFd01WV0FlVnBKL0hPeVJ3TWpQZCs1SHJBd3lDMEZUUVFIT0FZdEJpd0dxaDk1UUFPcmM4ZWwwN2JDSmoxNG9QdzFuZ0FzVVBtSHZFWkNhZ3pzSml4cC9jaTB2SUQ5U1lzZndTcU5OdWMzS2c5RWVqdm9HY0RDZ0xma045TGdjWUh6T29PV1B4Y3FBM1M2MkxDaHM0S3FaRXVCZDhBS2E5eFRnSVVCSlJVMWlRbEQ0VWNHTFFZdHZ3RVllQjY4Zjk2RWRFb3U5c1l4TUZqNjhoeGdZWEJacGMxMDRlMloxUDhXQmkyL0xWZy9qeGRnMVg5RU1sMTBSNlpZQThFTDNTdnZQUWxZbUp5Uy9XMGlsOWJQaDNNQ1FEOHZZcitNSFdBRkQzYmt0TnBaMGU0VmZEcGxISjRGTEl5MG9yYURicnczWDhSTitZVnhlWnorUEFZak52Q3Y5eFhRZ2JwanB5eHlMMzNnYWNEQ1JEVzFkdE9vWmR0RnZVTk9UZVBQeGV4bEVOZFN4SXhkWGtKSDJycTloRTFoeCtKNXdNS29PN3Q3YWZhTHUwVHVIN2crZUptQmVXeitBV1h3TXZKWklVVU1haUQ0b2ZrQ3NMU0pYUEZ4aFNqU0t0SXRjM29hQm02WGhqTkJYd1VlN2pjOG1aNzg1SURHM3I1NDlSVmdZVVkvMkZ3akhFd1JDSXFKWjRtRWFlQW1IZ0RQZ25jaFhYMjRwY1lYSUJVOFNOOEJGZ2FmVmRwQ1Y4ek1FU1hFM01TczNGY0cxOU9ISmRFVnMzSUVEd2N2WkwrODl5VmdZWEpSem1qTThwSSt2UlpYNUdFd1VIVkRBRzlxK2lvbzExVXZ4V1VuZVBvV3NFQlVxQ2xSNVJZT3BtZHl0Z2MrSGl1bzA4SVJFRUg5T0FZKzlxRzZGWm50QktuZ2Uvc2FzRFJDZkpsZVR4ZmNua2svRzU3TWkxYkJSYXVxNU9ORXY4Q1RpTnBZbjNGWVkxZGZ2ekpnblpqK1BaVkhhZGhEeGVLSWVNN1lOQzdheXNBVnQ4MExSMER3SUZ3V1JqeGNUSHVyTzN3TlVzR0RaOEFLb2tiUDhWNXhSQnlZbUJKSXZjeUxObTZMMWducFJjVm5BS3h3L0lPS0FrZkE0OGY5NFY4VnRBeWp2bVhBQ2tPZWxPSWpkUDI4UEZiSU0yQTdCdGpCaXZVYjV1ZFQ2bmIzWndjTnM3UXNmOFNBRllHRXJSMDl0UGl0dlNJaG9QRFo0c1hyMk9KVlVmS3h1MC9nTVNTZkJNKzFkZlJFNEVyK21BRXJCZzhndjlZTjh3UFNGdXUyMlBWQkpuQUY2NnJBWTBrZXpGOFZZM2taL3BvQlN3ZkoybzcyMENQdjdxT3p4NlNLdW00eW1aYnY1VjhRUkkzQXM4ZW0wU1B2N1dPcFNzYzZ4Q1VNV0RvSmhjdHlkclhRME1WRmRGcENzb2psd2c3SmdNTTBNTUlENEJuRUFZS0hFcFlVVWU2dUZnTWN5SmN5WUJua2dkNWVvdFVicWtRUlYrUWdnZ2N5QXhlRFZpelFBbytBVjhBelE2Wm0wUnNicXdpOHhNMFlCUml3ak5HcjcrcXF3NTEwejJ0N3hHNkpyS2FjYTR0Qkt4Sm9nVGZBSTROR3A5RjlyKzl4YlpuNFB1YVA0eHNHTEl2RXp5NXJwdEhMU2tTcUR5VC9qOFMwL0xrL0FlMk1XMUtFM2hOeHF6bGxmUHl6dU54WWgyV1ZnTnJ2djB5cnB4dnZ5eGNaSU9CNHlnRGxUNERTNWgwOGNQcXdaSkcyZUgxNnZjWW0vR3FSQWl4aFdTUmc4TSs3dW52cG5lK3I2ZW81dVVKWGdhQlZqWUg1MVI4QWhqbUhudXFhT2JuMDd2ZlZCSjdnSm84Q0RGanlhTmwzcDlhalBmVEtWNVVpYnhHWWw0SEwrMkFGcDAvTTlaV3pjK20xcnlvSlBNQk5QZ1VZc09UVHRPK09MZTA5OU5yWGxYVFY3Rnc2UFNGWkZMaGtTY3RiNEFXOUpZNStWOC9PcGRlL1pxRHFZMzZiM2pCZzJVVFk0TnRpdDhWUkVTWEhZQzJDdytCZ0xvYmgydU15NWc1emlMbUUzdkxkVFRYcytCbk04RGErWjhDeWtiaWh0MFpsazNXcDlZU3NrV2VQU1JOUzE2QXhyT2R5aTlTSnVZS2tqTG5ESE1MUTRwZHFOYUc4SEsvL0diRGlSUG44M2EzMHdPcHk0WUNxSFJjSGovZldjY2t0UUJTdG41Z1RjZXhMU0JaenRmQ05jc3JmMHhvbnJ1SEhNbURGbVFmcW1qcHA5VGRWZE5QQ1FwRURDZUNGWEVpLzVMQ2Z1QjBaUVh2TWdUWVhtSnMzdnFraXpCVzMrRktBQVN1KzlPOTdPb3pmV2FYTnRPVHR2WFRsckZ6cVB5S0ZmallzY1B5SUpnSHdkL0trVWh6MVFIUFFIb1lTekFYbWhKczZGR0RBVW1jdStub0NKZjNHckFhYThVSVpYWHhIbGxoRUlyUmpUQnBMWGhJbFQwaFNnOGFrQ2VVNWdBcTBudmxDbWFBOTU2VHFZMGVsM2pCZ0tUVWRwM2FtdXFHVDFteXBwU2xQbDlLUWFWbkNPZ1V6T255N1dPZGxYTG9DelVBNzBCQ1dQdEIweWpPbHRHWnJMVlUzOHBIdlZBNVU2eE1HTExYbUkycHY2bzkwMGRlWmgrbisxL2VJRk02UURxQm42VGNpUlVnS0hJQjlLb0NCSnFBVHdBbTB3dnZyNStmUi9hdjJDRnFDcHR6Y1F3RUdMUGZNMVVrOVJjZ0hMSTB2ZlhtSUpqeStneTZkbGgyd1pwM1F3Y0FFNzBjSkRHTWVORHBWNktFQVVBTkdwdENsMDdNRmpVQXIwSXpEWlU1aUpWZjl3NERscXVtSzNObkR6VjIwdGJDSm52cmtnUEFSK3YyZDJTTDFEWTQrMEg4aGRBUXBucjBraFdFc0dOT0F4RlF4UmdBVWt1TmRkbGMyalgyc2hKNys5QUJ0SzJ5aWhoYVdvaUp6anJ1K1ljQnkxM3pwN20xamE3ZXdjQ0ZSM0l3WGRvbXNBZWRQeXV5VHdxQmsxc3BKWWRGRE1sSFJsUUo5UXQvUVI3Z2FvTS9vTzRBWS9sRVkwMS92S3hCamhPdEJkbWtMTmJWMjY2WVRYK2d1Q2pCZ3VXdStUUGNXTlJjUDFoMmpyUVZOOU1yNlNwRklMbkhwZHJwbWJpNmRQeWxEU0NiUTh5QjFMd0FCN3dFSWtGaGc3a2UyVE5tZ3BvRVI3bzFuNEZsNEpwNk5QcUF2ZUkvUEFVem9LL3FNSkhnWUE4YUNNV0ZzM1B4QkFRWXNmOHh6eEZGMmRCNm5pdG9PeWk1cm9iWEpkYlJ5M1NIaGdUOXB4VTc2MTZJaTRZOTB5WlFzK3RXRWREcnJoSVFESlQrT21RQVZJZTBrQUZ5U292N2h1S1pkajkvaUhwQ1dBRWE0TjU0QjN5YzhjOUtUTzBVZlhseDNTUFFKZlVNZjBWZHUvcVlBQTVhLzV6L202TnVQOVZCdFV5ZVZIbWluekozTnRLV2dpZGFuSDZZUE50ZlFxZzFWdFBLTFE3VGk0d3BhOXY1K2V2VDkvZUlWNzdVLzdUTmNBekRFYi9CYjNBUDN3ajF4Ynp3RHorTEdGSWhHQVFhc2FOVGg3NWdDVEFHbEtNQ0FwZFIwY0dlWUFreUJhQlJnd0lwR0hmNk9LY0FVVUlvQ0RGaEtUUWQzaGluQUZJaEdBUWFzYU5UaDc1Z0NUQUdsS01DQXBkUjBjR2VZQWt5QmFCUmd3SXBHSGY2T0tjQVVVSW9DREZoS1RRZDNoaW5BRkloR0FRYXNhTlRoNzVnQ1RBR2xLUEQvQWRXcDJSQnhQVXVTQUFBQUFFbEZUa1N1UW1DQyIvPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
|
568
|
+
"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgPHBhdGggZmlsbD0iIzI0NUVDNiIgZD0iTTE2LDMyYy0zLjIsMC02LjItMC45LTguOS0yLjdjLTIuNi0xLjgtNC43LTQuMy01LjktNy4yQzAsMTkuMi0wLjMsMTYsMC4zLDEyLjlDMC45LDkuOCwyLjQsNyw0LjcsNC43IEM2LjIsMy4yLDcuOSwyLDkuOSwxLjJDMTEuOCwwLjQsMTMuOSwwLDE2LDBzNC4yLDAuNCw2LjEsMS4yYzEuOSwwLjgsMy43LDIsNS4yLDMuNXMyLjcsMy4zLDMuNSw1LjJjMC44LDEuOSwxLjIsNCwxLjIsNi4xIHMtMC40LDQuMi0xLjIsNi4xYy0wLjgsMS45LTIsMy43LTMuNSw1LjJjLTEuNSwxLjUtMy4yLDIuNy01LjIsMy41QzIwLjIsMzEuNiwxOC4xLDMyLDE2LDMyTDE2LDMyeiBNMjAuMiwxMS4ybDAuMSwwLjVsMi42LDkuNWgyLjEgTDIxLjUsOC45bC0wLjEtMC4zaC0xLjlsMCwwLjFsLTEuNywzLjFMMTYsMTQuOWwwLDAuMWwwLTAuMWwtMC4yLTAuOGwtMC42LTIuNGwtMC4xLTAuMmwtMC43LTIuNmwtMC4xLTAuM2gtMS45bDAsMC4xbC0xLjcsMy4xIGwtMS44LDMuMkw3LjEsMThsLTEuOCwzLjJoMi4xTDkuMiwxOGwxLjgtMy4ybDEuOC0zLjJsMC4zLTAuNWwwLjEsMC41bDAuNSwyLjFsMC43LDIuNmwwLjIsMC45TDE0LjIsMThsLTEuOCwzLjJoMi4xbDAuOC0xLjMgbDEuMy0yLjNsMS41LTIuN2wxLjgtMy4yTDIwLjIsMTEuMkwyMC4yLDExLjJ6Ii8+Cjwvc3ZnPgo=";
|
|
1605
569
|
const MYALGO_WALLET = {
|
|
1606
570
|
id: exports.PROVIDER_ID.MYALGO_WALLET,
|
|
1607
571
|
name: "MyAlgo Wallet",
|
|
@@ -1664,1147 +628,48 @@ const providers = {
|
|
|
1664
628
|
[exports.PROVIDER_ID.WALLET_CONNECT]: WALLET_CONNECT,
|
|
1665
629
|
};
|
|
1666
630
|
|
|
1667
|
-
const audio = `data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMzAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxDEI82IgCACTTf6////t98+t/1zM6EI0EjnShA1ZDQGwCihWSh/+31m+3T3//9v///+8isktZGQJQdVOqqAj3bzT2uob/+MYxEgJ62IcAABHLDA+NMOJVR//f+v/T3///////s601VGsHZ1JChXYMDDFChZLktspI2cRANRlAv6/7f9v/0//////6Ugi/+MYxFsJS2IgCACRTV9TK6QjqqLREYkhtQEagpiFkYQYKuGDFPp7vWtk619lsZL+duiJrb///7dOuZCbOCI7qOdlOnxRMxKD/+MYxHAJY2IoCACNT/pSA8JVAv//v/X9dP/////9r8yqZJznU5kd3CIDKMWQnF2IEClORjJGgJl5FnIPrr6KtLldn19bIn/T/+MYxIUJu2okEACTTNV/////XqhmdUqV2Wg6snZtpXGY3CJ5wHFTyS0P/avqv/pud6pZX1d7bk3XXpfdP///+Ts2hqWcGlJi/+MYxJkJ214cAACNTYEQosiRkGN8kyJVjqGKD613X0XY1H+r7lo789b3/b/9u/7b1dKmRGkR0OQcc7jbmFJpwthYsRGzaNYX/+MYxKwKK2YkEACTTARJ///LWsue/Kf/////W5K4XsY6nJZLEpr+yFCbYkKFUzYoQk6S9EwElUBYVoBsE+sylf9foSm1t9lS/+MYxL4KO2YcCACTTVu5pGRSEIpZiqIVVnbdHufbknQx6Pultv9kf9uvL57R38h8nqBpHJqZDbbFGW11xdtVZgUqltJZHhtq/+MYxNALG14YCACNMS8BvandlRGV/SiqrqtStTstbrV6f//tz8/ZUoh3RY1TnOyEDCAdVklceHyInItkgSKJ2uof/x/zz+KS/+MYxN4LO2IYCACTTQEmlFZRGzd6Lefkv////tfznKLv4NZTPgji8uQaa6hlcySiYiQEuVDRsQFhcGA2+PUDvvka+fT/fkd//+MYxOwMo2YkGABTSFf////n97B1Uwttzm0l0kRGqMMoy6zlDhgfQ2iJTrczBJjCcVQiTK0qKFn/yX/NWesrfq/////9ZKae/+MYxPQRA2oMAACTELWd87muwfkuw0cGyBYFhQaEYHAM/KZFCsERXTJKBp4OvEJRh6YgptX/d0+7zJbIqA0RHWdEVq9DqrBm/+MYxOsMm2IYEAFTTWVdBjTHwZSnuiITdUd3br9af+P95Orq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`;
|
|
1668
|
-
|
|
1669
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
1670
|
-
|
|
1671
|
-
var lib = {};
|
|
1672
|
-
|
|
1673
|
-
var uaParser_min = {exports: {}};
|
|
1674
|
-
|
|
1675
|
-
/* UAParser.js v1.0.32
|
|
1676
|
-
Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
|
|
1677
|
-
MIT License */
|
|
1678
|
-
|
|
1679
|
-
(function (module, exports) {
|
|
1680
|
-
(function(window,undefined$1){var LIBVERSION="1.0.32",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded",UA_MAX_LENGTH=350;var AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",BROWSER="Browser",CHROME="Chrome",EDGE="Edge",FIREFOX="Firefox",GOOGLE="Google",HUAWEI="Huawei",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",OPERA="Opera",SAMSUNG="Samsung",SHARP="Sharp",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",FACEBOOK="Facebook";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i]);}else {mergedRegexes[i]=regexes[i];}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i];}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\d\.]/g,EMPTY).split(".")[0]:undefined$1},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\s\s*/,EMPTY).replace(/\s\s*$/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match);}else {this[q[0]]=q[1];}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined$1;}else {this[q[0]]=match?match.replace(q[1],q[2]):undefined$1;}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined$1;}}else {this[q]=match?match:undefined$1;}}}}i+=2;}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined$1:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined$1:i}}return str};var oldSafariMap={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},windowsVersionMap={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"};var regexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/ ]+([\w\.]+)/i],[VERSION,[NAME,OPERA+" Mini"]],[/\bopr\/([\w\.]+)/i],[VERSION,[NAME,OPERA]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[NAME,VERSION],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"UC"+BROWSER]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[VERSION,[NAME,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[VERSION,[NAME,"IE"]],[/yabrowser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure "+BROWSER],VERSION],[/\bfocus\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" Focus"]],[/\bopt\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI "+BROWSER]],[/fxios\/([-\w\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\bqihu|(qi?ho?o?|360)browser/i],[[NAME,"360 "+BROWSER]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 "+BROWSER],VERSION],[/(comodo_dragon)\/([\w\.]+)/i],[[NAME,/_/g," "],VERSION],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[NAME,VERSION],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[NAME],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[NAME,VERSION],[/\bgsa\/([\w\.]+) .*safari\//i],[VERSION,[NAME,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[VERSION,[NAME,CHROME+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[NAME,CHROME+" WebView"],VERSION],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,"Android "+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[VERSION,[NAME,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[NAME,"Netscape"],VERSION],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,FIREFOX+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[NAME,VERSION]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\w)[;\)]/i],[[ARCHITECTURE,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/\((ip(?:hone|od)[\w ]*);/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[MODEL,[VENDOR,"OPPO"],[TYPE,MOBILE]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[MODEL,[VENDOR,"Lenovo"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[MODEL,/_/g," "],[VENDOR,"Nokia"],[TYPE,MOBILE]],[/(pixel c)\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[MODEL,[VENDOR,"OnePlus"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[MODEL,/(.+)/g,"Fire Phone $1"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\w\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,"AT&T"],[TYPE,MOBILE]],[/\bsie-(\w*)/i],[MODEL,[VENDOR,"Siemens"],[TYPE,MOBILE]],[/\b(rct\w+) b/i],[MODEL,[VENDOR,"RCA"],[TYPE,TABLET]],[/\b(venue[\d ]{2,7}) b/i],[MODEL,[VENDOR,"Dell"],[TYPE,TABLET]],[/\b(q(?:mv|ta)\w+) b/i],[MODEL,[VENDOR,"Verizon"],[TYPE,TABLET]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[MODEL,[VENDOR,"Barnes & Noble"],[TYPE,TABLET]],[/\b(tm\d{3}\w+) b/i],[MODEL,[VENDOR,"NuVision"],[TYPE,TABLET]],[/\b(k88) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,TABLET]],[/\b(nx\d{3}j) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,MOBILE]],[/\b(gen\d{3}) b.+49h/i],[MODEL,[VENDOR,"Swiss"],[TYPE,MOBILE]],[/\b(zur\d{3}) b/i],[MODEL,[VENDOR,"Swiss"],[TYPE,TABLET]],[/\b((zeki)?tb.*\b) b/i],[MODEL,[VENDOR,"Zeki"],[TYPE,TABLET]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[VENDOR,"Dragon Touch"],MODEL,[TYPE,TABLET]],[/\b(ns-?\w{0,9}) b/i],[MODEL,[VENDOR,"Insignia"],[TYPE,TABLET]],[/\b((nxa|next)-?\w{0,9}) b/i],[MODEL,[VENDOR,"NextBook"],[TYPE,TABLET]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,"Voice"],MODEL,[TYPE,MOBILE]],[/\b(lvtel\-)?(v1[12]) b/i],[[VENDOR,"LvTel"],MODEL,[TYPE,MOBILE]],[/\b(ph-1) /i],[MODEL,[VENDOR,"Essential"],[TYPE,MOBILE]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[MODEL,[VENDOR,"Envizen"],[TYPE,TABLET]],[/\b(trio[-\w\. ]+) b/i],[MODEL,[VENDOR,"MachSpeed"],[TYPE,TABLET]],[/\btu_(1491) b/i],[MODEL,[VENDOR,"Rotor"],[TYPE,TABLET]],[/(shield[\w ]+) b/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,TABLET]],[/(sprint) (\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+" TV"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+"cast"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\w)( bui|\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\w ]+)( bui|\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[TYPE,SMARTTV]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/droid.+; (glass) \d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( 2)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\w\. ]{0,9});.+buil/i],[MODEL,[VENDOR,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+"HTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i],[NAME,VERSION],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[NAME,"Windows"],[VERSION,strMapper,windowsVersionMap]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[NAME,"Mac OS"],[VERSION,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[VERSION,[NAME,"webOS"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROME+"cast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[NAME,"Chromium OS"],VERSION],[/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[NAME,VERSION],[/(sunos) ?([\w\.\d]*)/i],[[NAME,"Solaris"],VERSION],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined$1;}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _ua=ua||(typeof window!==UNDEF_TYPE&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:EMPTY);var _rgxmap=extensions?extend(regexes,extensions):regexes;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined$1;_browser[VERSION]=undefined$1;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser.major=majorize(_browser.version);return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined$1;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined$1;_device[MODEL]=undefined$1;_device[TYPE]=undefined$1;rgxMapper.call(_device,_ua,_rgxmap.device);return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined$1;_engine[VERSION]=undefined$1;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined$1;_os[VERSION]=undefined$1;rgxMapper.call(_os,_ua,_rgxmap.os);return _os};this.getResult=function(){return {ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);{if(module.exports){exports=module.exports=UAParser;}exports.UAParser=UAParser;}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop];}};}})(typeof window==="object"?window:commonjsGlobal);
|
|
1681
|
-
} (uaParser_min, uaParser_min.exports));
|
|
1682
|
-
|
|
1683
|
-
Object.defineProperty(lib, '__esModule', { value: true });
|
|
1684
|
-
|
|
1685
|
-
function _interopDefault$1 (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
1686
|
-
|
|
1687
|
-
var React = require$$0__default["default"];
|
|
1688
|
-
var React__default = _interopDefault$1(React);
|
|
1689
|
-
|
|
1690
|
-
var UAParser = uaParser_min.exports;
|
|
1691
|
-
|
|
1692
|
-
var ClientUAInstance = new UAParser();
|
|
1693
|
-
var browser = ClientUAInstance.getBrowser();
|
|
1694
|
-
var cpu = ClientUAInstance.getCPU();
|
|
1695
|
-
var device = ClientUAInstance.getDevice();
|
|
1696
|
-
var engine = ClientUAInstance.getEngine();
|
|
1697
|
-
var os = ClientUAInstance.getOS();
|
|
1698
|
-
var ua = ClientUAInstance.getUA();
|
|
1699
|
-
var setUa = function setUa(userAgentString) {
|
|
1700
|
-
return ClientUAInstance.setUA(userAgentString);
|
|
1701
|
-
};
|
|
1702
|
-
var parseUserAgent = function parseUserAgent(userAgent) {
|
|
1703
|
-
if (!userAgent) {
|
|
1704
|
-
console.error('No userAgent string was provided');
|
|
1705
|
-
return;
|
|
1706
|
-
}
|
|
1707
|
-
|
|
1708
|
-
var UserAgentInstance = new UAParser(userAgent);
|
|
1709
|
-
return {
|
|
1710
|
-
UA: UserAgentInstance,
|
|
1711
|
-
browser: UserAgentInstance.getBrowser(),
|
|
1712
|
-
cpu: UserAgentInstance.getCPU(),
|
|
1713
|
-
device: UserAgentInstance.getDevice(),
|
|
1714
|
-
engine: UserAgentInstance.getEngine(),
|
|
1715
|
-
os: UserAgentInstance.getOS(),
|
|
1716
|
-
ua: UserAgentInstance.getUA(),
|
|
1717
|
-
setUserAgent: function setUserAgent(userAgentString) {
|
|
1718
|
-
return UserAgentInstance.setUA(userAgentString);
|
|
1719
|
-
}
|
|
1720
|
-
};
|
|
1721
|
-
};
|
|
631
|
+
const algodClient = new algosdk__default["default"].Algodv2(NODE_TOKEN, NODE_SERVER, NODE_PORT);
|
|
1722
632
|
|
|
1723
|
-
var UAHelper = /*#__PURE__*/Object.freeze({
|
|
1724
|
-
ClientUAInstance: ClientUAInstance,
|
|
1725
|
-
browser: browser,
|
|
1726
|
-
cpu: cpu,
|
|
1727
|
-
device: device,
|
|
1728
|
-
engine: engine,
|
|
1729
|
-
os: os,
|
|
1730
|
-
ua: ua,
|
|
1731
|
-
setUa: setUa,
|
|
1732
|
-
parseUserAgent: parseUserAgent
|
|
1733
|
-
});
|
|
1734
|
-
|
|
1735
|
-
function ownKeys(object, enumerableOnly) {
|
|
1736
|
-
var keys = Object.keys(object);
|
|
1737
|
-
|
|
1738
|
-
if (Object.getOwnPropertySymbols) {
|
|
1739
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
1740
|
-
|
|
1741
|
-
if (enumerableOnly) {
|
|
1742
|
-
symbols = symbols.filter(function (sym) {
|
|
1743
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
1744
|
-
});
|
|
1745
|
-
}
|
|
1746
|
-
|
|
1747
|
-
keys.push.apply(keys, symbols);
|
|
1748
|
-
}
|
|
1749
|
-
|
|
1750
|
-
return keys;
|
|
1751
|
-
}
|
|
1752
|
-
|
|
1753
|
-
function _objectSpread2(target) {
|
|
1754
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1755
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
1756
|
-
|
|
1757
|
-
if (i % 2) {
|
|
1758
|
-
ownKeys(Object(source), true).forEach(function (key) {
|
|
1759
|
-
_defineProperty(target, key, source[key]);
|
|
1760
|
-
});
|
|
1761
|
-
} else if (Object.getOwnPropertyDescriptors) {
|
|
1762
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
1763
|
-
} else {
|
|
1764
|
-
ownKeys(Object(source)).forEach(function (key) {
|
|
1765
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
1766
|
-
});
|
|
1767
|
-
}
|
|
1768
|
-
}
|
|
1769
|
-
|
|
1770
|
-
return target;
|
|
1771
|
-
}
|
|
1772
|
-
|
|
1773
|
-
function _typeof(obj) {
|
|
1774
|
-
"@babel/helpers - typeof";
|
|
1775
|
-
|
|
1776
|
-
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
1777
|
-
_typeof = function (obj) {
|
|
1778
|
-
return typeof obj;
|
|
1779
|
-
};
|
|
1780
|
-
} else {
|
|
1781
|
-
_typeof = function (obj) {
|
|
1782
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
1783
|
-
};
|
|
1784
|
-
}
|
|
1785
|
-
|
|
1786
|
-
return _typeof(obj);
|
|
1787
|
-
}
|
|
1788
|
-
|
|
1789
|
-
function _classCallCheck(instance, Constructor) {
|
|
1790
|
-
if (!(instance instanceof Constructor)) {
|
|
1791
|
-
throw new TypeError("Cannot call a class as a function");
|
|
1792
|
-
}
|
|
1793
|
-
}
|
|
1794
|
-
|
|
1795
|
-
function _defineProperties(target, props) {
|
|
1796
|
-
for (var i = 0; i < props.length; i++) {
|
|
1797
|
-
var descriptor = props[i];
|
|
1798
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
1799
|
-
descriptor.configurable = true;
|
|
1800
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
1801
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
1802
|
-
}
|
|
1803
|
-
}
|
|
1804
|
-
|
|
1805
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
1806
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
1807
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
1808
|
-
return Constructor;
|
|
1809
|
-
}
|
|
1810
|
-
|
|
1811
|
-
function _defineProperty(obj, key, value) {
|
|
1812
|
-
if (key in obj) {
|
|
1813
|
-
Object.defineProperty(obj, key, {
|
|
1814
|
-
value: value,
|
|
1815
|
-
enumerable: true,
|
|
1816
|
-
configurable: true,
|
|
1817
|
-
writable: true
|
|
1818
|
-
});
|
|
1819
|
-
} else {
|
|
1820
|
-
obj[key] = value;
|
|
1821
|
-
}
|
|
1822
|
-
|
|
1823
|
-
return obj;
|
|
1824
|
-
}
|
|
1825
|
-
|
|
1826
|
-
function _extends() {
|
|
1827
|
-
_extends = Object.assign || function (target) {
|
|
1828
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1829
|
-
var source = arguments[i];
|
|
1830
|
-
|
|
1831
|
-
for (var key in source) {
|
|
1832
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1833
|
-
target[key] = source[key];
|
|
1834
|
-
}
|
|
1835
|
-
}
|
|
1836
|
-
}
|
|
1837
|
-
|
|
1838
|
-
return target;
|
|
1839
|
-
};
|
|
1840
|
-
|
|
1841
|
-
return _extends.apply(this, arguments);
|
|
1842
|
-
}
|
|
1843
|
-
|
|
1844
|
-
function _inherits(subClass, superClass) {
|
|
1845
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
1846
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
1847
|
-
}
|
|
1848
|
-
|
|
1849
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
1850
|
-
constructor: {
|
|
1851
|
-
value: subClass,
|
|
1852
|
-
writable: true,
|
|
1853
|
-
configurable: true
|
|
1854
|
-
}
|
|
1855
|
-
});
|
|
1856
|
-
if (superClass) _setPrototypeOf(subClass, superClass);
|
|
1857
|
-
}
|
|
1858
|
-
|
|
1859
|
-
function _getPrototypeOf(o) {
|
|
1860
|
-
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
|
1861
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
1862
|
-
};
|
|
1863
|
-
return _getPrototypeOf(o);
|
|
1864
|
-
}
|
|
1865
|
-
|
|
1866
|
-
function _setPrototypeOf(o, p) {
|
|
1867
|
-
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
|
1868
|
-
o.__proto__ = p;
|
|
1869
|
-
return o;
|
|
1870
|
-
};
|
|
1871
|
-
|
|
1872
|
-
return _setPrototypeOf(o, p);
|
|
1873
|
-
}
|
|
1874
|
-
|
|
1875
|
-
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
1876
|
-
if (source == null) return {};
|
|
1877
|
-
var target = {};
|
|
1878
|
-
var sourceKeys = Object.keys(source);
|
|
1879
|
-
var key, i;
|
|
1880
|
-
|
|
1881
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
|
1882
|
-
key = sourceKeys[i];
|
|
1883
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
1884
|
-
target[key] = source[key];
|
|
1885
|
-
}
|
|
1886
|
-
|
|
1887
|
-
return target;
|
|
1888
|
-
}
|
|
1889
|
-
|
|
1890
|
-
function _objectWithoutProperties(source, excluded) {
|
|
1891
|
-
if (source == null) return {};
|
|
1892
|
-
|
|
1893
|
-
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
1894
|
-
|
|
1895
|
-
var key, i;
|
|
1896
|
-
|
|
1897
|
-
if (Object.getOwnPropertySymbols) {
|
|
1898
|
-
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
1899
|
-
|
|
1900
|
-
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
1901
|
-
key = sourceSymbolKeys[i];
|
|
1902
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
1903
|
-
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
1904
|
-
target[key] = source[key];
|
|
1905
|
-
}
|
|
1906
|
-
}
|
|
1907
|
-
|
|
1908
|
-
return target;
|
|
1909
|
-
}
|
|
1910
|
-
|
|
1911
|
-
function _assertThisInitialized(self) {
|
|
1912
|
-
if (self === void 0) {
|
|
1913
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
1914
|
-
}
|
|
1915
|
-
|
|
1916
|
-
return self;
|
|
1917
|
-
}
|
|
1918
|
-
|
|
1919
|
-
function _possibleConstructorReturn(self, call) {
|
|
1920
|
-
if (call && (typeof call === "object" || typeof call === "function")) {
|
|
1921
|
-
return call;
|
|
1922
|
-
} else if (call !== void 0) {
|
|
1923
|
-
throw new TypeError("Derived constructors may only return object or undefined");
|
|
1924
|
-
}
|
|
1925
|
-
|
|
1926
|
-
return _assertThisInitialized(self);
|
|
1927
|
-
}
|
|
1928
|
-
|
|
1929
|
-
function _slicedToArray(arr, i) {
|
|
1930
|
-
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
1931
|
-
}
|
|
1932
|
-
|
|
1933
|
-
function _arrayWithHoles(arr) {
|
|
1934
|
-
if (Array.isArray(arr)) return arr;
|
|
1935
|
-
}
|
|
1936
|
-
|
|
1937
|
-
function _iterableToArrayLimit(arr, i) {
|
|
1938
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
1939
|
-
|
|
1940
|
-
if (_i == null) return;
|
|
1941
|
-
var _arr = [];
|
|
1942
|
-
var _n = true;
|
|
1943
|
-
var _d = false;
|
|
1944
|
-
|
|
1945
|
-
var _s, _e;
|
|
1946
|
-
|
|
1947
|
-
try {
|
|
1948
|
-
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
1949
|
-
_arr.push(_s.value);
|
|
1950
|
-
|
|
1951
|
-
if (i && _arr.length === i) break;
|
|
1952
|
-
}
|
|
1953
|
-
} catch (err) {
|
|
1954
|
-
_d = true;
|
|
1955
|
-
_e = err;
|
|
1956
|
-
} finally {
|
|
1957
|
-
try {
|
|
1958
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
1959
|
-
} finally {
|
|
1960
|
-
if (_d) throw _e;
|
|
1961
|
-
}
|
|
1962
|
-
}
|
|
1963
|
-
|
|
1964
|
-
return _arr;
|
|
1965
|
-
}
|
|
1966
|
-
|
|
1967
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
1968
|
-
if (!o) return;
|
|
1969
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
1970
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
1971
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
1972
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
|
1973
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
1974
|
-
}
|
|
1975
|
-
|
|
1976
|
-
function _arrayLikeToArray(arr, len) {
|
|
1977
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
1978
|
-
|
|
1979
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
1980
|
-
|
|
1981
|
-
return arr2;
|
|
1982
|
-
}
|
|
1983
|
-
|
|
1984
|
-
function _nonIterableRest() {
|
|
1985
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
1986
|
-
}
|
|
1987
|
-
|
|
1988
|
-
var DeviceTypes = {
|
|
1989
|
-
Mobile: 'mobile',
|
|
1990
|
-
Tablet: 'tablet',
|
|
1991
|
-
SmartTv: 'smarttv',
|
|
1992
|
-
Console: 'console',
|
|
1993
|
-
Wearable: 'wearable',
|
|
1994
|
-
Embedded: 'embedded',
|
|
1995
|
-
Browser: undefined
|
|
1996
|
-
};
|
|
1997
|
-
var BrowserTypes = {
|
|
1998
|
-
Chrome: 'Chrome',
|
|
1999
|
-
Firefox: 'Firefox',
|
|
2000
|
-
Opera: 'Opera',
|
|
2001
|
-
Yandex: 'Yandex',
|
|
2002
|
-
Safari: 'Safari',
|
|
2003
|
-
InternetExplorer: 'Internet Explorer',
|
|
2004
|
-
Edge: 'Edge',
|
|
2005
|
-
Chromium: 'Chromium',
|
|
2006
|
-
Ie: 'IE',
|
|
2007
|
-
MobileSafari: 'Mobile Safari',
|
|
2008
|
-
EdgeChromium: 'Edge Chromium',
|
|
2009
|
-
MIUI: 'MIUI Browser',
|
|
2010
|
-
SamsungBrowser: 'Samsung Browser'
|
|
2011
|
-
};
|
|
2012
|
-
var OsTypes = {
|
|
2013
|
-
IOS: 'iOS',
|
|
2014
|
-
Android: 'Android',
|
|
2015
|
-
WindowsPhone: 'Windows Phone',
|
|
2016
|
-
Windows: 'Windows',
|
|
2017
|
-
MAC_OS: 'Mac OS'
|
|
2018
|
-
};
|
|
2019
|
-
var InitialDeviceTypes = {
|
|
2020
|
-
isMobile: false,
|
|
2021
|
-
isTablet: false,
|
|
2022
|
-
isBrowser: false,
|
|
2023
|
-
isSmartTV: false,
|
|
2024
|
-
isConsole: false,
|
|
2025
|
-
isWearable: false
|
|
2026
|
-
};
|
|
2027
|
-
|
|
2028
|
-
var checkDeviceType = function checkDeviceType(type) {
|
|
2029
|
-
switch (type) {
|
|
2030
|
-
case DeviceTypes.Mobile:
|
|
2031
|
-
return {
|
|
2032
|
-
isMobile: true
|
|
2033
|
-
};
|
|
2034
|
-
|
|
2035
|
-
case DeviceTypes.Tablet:
|
|
2036
|
-
return {
|
|
2037
|
-
isTablet: true
|
|
2038
|
-
};
|
|
2039
|
-
|
|
2040
|
-
case DeviceTypes.SmartTv:
|
|
2041
|
-
return {
|
|
2042
|
-
isSmartTV: true
|
|
2043
|
-
};
|
|
2044
|
-
|
|
2045
|
-
case DeviceTypes.Console:
|
|
2046
|
-
return {
|
|
2047
|
-
isConsole: true
|
|
2048
|
-
};
|
|
2049
|
-
|
|
2050
|
-
case DeviceTypes.Wearable:
|
|
2051
|
-
return {
|
|
2052
|
-
isWearable: true
|
|
2053
|
-
};
|
|
2054
|
-
|
|
2055
|
-
case DeviceTypes.Browser:
|
|
2056
|
-
return {
|
|
2057
|
-
isBrowser: true
|
|
2058
|
-
};
|
|
2059
|
-
|
|
2060
|
-
case DeviceTypes.Embedded:
|
|
2061
|
-
return {
|
|
2062
|
-
isEmbedded: true
|
|
2063
|
-
};
|
|
2064
|
-
|
|
2065
|
-
default:
|
|
2066
|
-
return InitialDeviceTypes;
|
|
2067
|
-
}
|
|
2068
|
-
};
|
|
2069
|
-
var setUserAgent = function setUserAgent(userAgent) {
|
|
2070
|
-
return setUa(userAgent);
|
|
2071
|
-
};
|
|
2072
|
-
var setDefaults = function setDefaults(p) {
|
|
2073
|
-
var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';
|
|
2074
|
-
return p ? p : d;
|
|
2075
|
-
};
|
|
2076
|
-
var getNavigatorInstance = function getNavigatorInstance() {
|
|
2077
|
-
if (typeof window !== 'undefined') {
|
|
2078
|
-
if (window.navigator || navigator) {
|
|
2079
|
-
return window.navigator || navigator;
|
|
2080
|
-
}
|
|
2081
|
-
}
|
|
2082
|
-
|
|
2083
|
-
return false;
|
|
2084
|
-
};
|
|
2085
|
-
var isIOS13Check = function isIOS13Check(type) {
|
|
2086
|
-
var nav = getNavigatorInstance();
|
|
2087
|
-
return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);
|
|
2088
|
-
};
|
|
2089
|
-
|
|
2090
|
-
var browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {
|
|
2091
|
-
return {
|
|
2092
|
-
isBrowser: isBrowser,
|
|
2093
|
-
browserMajorVersion: setDefaults(browser.major),
|
|
2094
|
-
browserFullVersion: setDefaults(browser.version),
|
|
2095
|
-
browserName: setDefaults(browser.name),
|
|
2096
|
-
engineName: setDefaults(engine.name),
|
|
2097
|
-
engineVersion: setDefaults(engine.version),
|
|
2098
|
-
osName: setDefaults(os.name),
|
|
2099
|
-
osVersion: setDefaults(os.version),
|
|
2100
|
-
userAgent: setDefaults(ua)
|
|
2101
|
-
};
|
|
2102
|
-
};
|
|
2103
|
-
var mobilePayload = function mobilePayload(type, device, os, ua) {
|
|
2104
|
-
return _objectSpread2({}, type, {
|
|
2105
|
-
vendor: setDefaults(device.vendor),
|
|
2106
|
-
model: setDefaults(device.model),
|
|
2107
|
-
os: setDefaults(os.name),
|
|
2108
|
-
osVersion: setDefaults(os.version),
|
|
2109
|
-
ua: setDefaults(ua)
|
|
2110
|
-
});
|
|
2111
|
-
};
|
|
2112
|
-
var smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {
|
|
2113
|
-
return {
|
|
2114
|
-
isSmartTV: isSmartTV,
|
|
2115
|
-
engineName: setDefaults(engine.name),
|
|
2116
|
-
engineVersion: setDefaults(engine.version),
|
|
2117
|
-
osName: setDefaults(os.name),
|
|
2118
|
-
osVersion: setDefaults(os.version),
|
|
2119
|
-
userAgent: setDefaults(ua)
|
|
2120
|
-
};
|
|
2121
|
-
};
|
|
2122
|
-
var consolePayload = function consolePayload(isConsole, engine, os, ua) {
|
|
2123
|
-
return {
|
|
2124
|
-
isConsole: isConsole,
|
|
2125
|
-
engineName: setDefaults(engine.name),
|
|
2126
|
-
engineVersion: setDefaults(engine.version),
|
|
2127
|
-
osName: setDefaults(os.name),
|
|
2128
|
-
osVersion: setDefaults(os.version),
|
|
2129
|
-
userAgent: setDefaults(ua)
|
|
2130
|
-
};
|
|
2131
|
-
};
|
|
2132
|
-
var wearablePayload = function wearablePayload(isWearable, engine, os, ua) {
|
|
2133
|
-
return {
|
|
2134
|
-
isWearable: isWearable,
|
|
2135
|
-
engineName: setDefaults(engine.name),
|
|
2136
|
-
engineVersion: setDefaults(engine.version),
|
|
2137
|
-
osName: setDefaults(os.name),
|
|
2138
|
-
osVersion: setDefaults(os.version),
|
|
2139
|
-
userAgent: setDefaults(ua)
|
|
2140
|
-
};
|
|
2141
|
-
};
|
|
2142
|
-
var embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {
|
|
2143
|
-
return {
|
|
2144
|
-
isEmbedded: isEmbedded,
|
|
2145
|
-
vendor: setDefaults(device.vendor),
|
|
2146
|
-
model: setDefaults(device.model),
|
|
2147
|
-
engineName: setDefaults(engine.name),
|
|
2148
|
-
engineVersion: setDefaults(engine.version),
|
|
2149
|
-
osName: setDefaults(os.name),
|
|
2150
|
-
osVersion: setDefaults(os.version),
|
|
2151
|
-
userAgent: setDefaults(ua)
|
|
2152
|
-
};
|
|
2153
|
-
};
|
|
2154
|
-
|
|
2155
|
-
function deviceDetect(userAgent) {
|
|
2156
|
-
var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,
|
|
2157
|
-
device = _ref.device,
|
|
2158
|
-
browser = _ref.browser,
|
|
2159
|
-
engine = _ref.engine,
|
|
2160
|
-
os = _ref.os,
|
|
2161
|
-
ua = _ref.ua;
|
|
2162
|
-
|
|
2163
|
-
var type = checkDeviceType(device.type);
|
|
2164
|
-
var isBrowser = type.isBrowser,
|
|
2165
|
-
isMobile = type.isMobile,
|
|
2166
|
-
isTablet = type.isTablet,
|
|
2167
|
-
isSmartTV = type.isSmartTV,
|
|
2168
|
-
isConsole = type.isConsole,
|
|
2169
|
-
isWearable = type.isWearable,
|
|
2170
|
-
isEmbedded = type.isEmbedded;
|
|
2171
|
-
|
|
2172
|
-
if (isBrowser) {
|
|
2173
|
-
return browserPayload(isBrowser, browser, engine, os, ua);
|
|
2174
|
-
}
|
|
2175
|
-
|
|
2176
|
-
if (isSmartTV) {
|
|
2177
|
-
return smartTvPayload(isSmartTV, engine, os, ua);
|
|
2178
|
-
}
|
|
2179
|
-
|
|
2180
|
-
if (isConsole) {
|
|
2181
|
-
return consolePayload(isConsole, engine, os, ua);
|
|
2182
|
-
}
|
|
2183
|
-
|
|
2184
|
-
if (isMobile) {
|
|
2185
|
-
return mobilePayload(type, device, os, ua);
|
|
2186
|
-
}
|
|
2187
|
-
|
|
2188
|
-
if (isTablet) {
|
|
2189
|
-
return mobilePayload(type, device, os, ua);
|
|
2190
|
-
}
|
|
2191
|
-
|
|
2192
|
-
if (isWearable) {
|
|
2193
|
-
return wearablePayload(isWearable, engine, os, ua);
|
|
2194
|
-
}
|
|
2195
|
-
|
|
2196
|
-
if (isEmbedded) {
|
|
2197
|
-
return embeddedPayload(isEmbedded, device, engine, os, ua);
|
|
2198
|
-
}
|
|
2199
|
-
}
|
|
2200
|
-
|
|
2201
|
-
var isMobileType = function isMobileType(_ref) {
|
|
2202
|
-
var type = _ref.type;
|
|
2203
|
-
return type === DeviceTypes.Mobile;
|
|
2204
|
-
};
|
|
2205
|
-
var isTabletType = function isTabletType(_ref2) {
|
|
2206
|
-
var type = _ref2.type;
|
|
2207
|
-
return type === DeviceTypes.Tablet;
|
|
2208
|
-
};
|
|
2209
|
-
var isMobileAndTabletType = function isMobileAndTabletType(_ref3) {
|
|
2210
|
-
var type = _ref3.type;
|
|
2211
|
-
return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;
|
|
2212
|
-
};
|
|
2213
|
-
var isSmartTVType = function isSmartTVType(_ref4) {
|
|
2214
|
-
var type = _ref4.type;
|
|
2215
|
-
return type === DeviceTypes.SmartTv;
|
|
2216
|
-
};
|
|
2217
|
-
var isBrowserType = function isBrowserType(_ref5) {
|
|
2218
|
-
var type = _ref5.type;
|
|
2219
|
-
return type === DeviceTypes.Browser;
|
|
2220
|
-
};
|
|
2221
|
-
var isWearableType = function isWearableType(_ref6) {
|
|
2222
|
-
var type = _ref6.type;
|
|
2223
|
-
return type === DeviceTypes.Wearable;
|
|
2224
|
-
};
|
|
2225
|
-
var isConsoleType = function isConsoleType(_ref7) {
|
|
2226
|
-
var type = _ref7.type;
|
|
2227
|
-
return type === DeviceTypes.Console;
|
|
2228
|
-
};
|
|
2229
|
-
var isEmbeddedType = function isEmbeddedType(_ref8) {
|
|
2230
|
-
var type = _ref8.type;
|
|
2231
|
-
return type === DeviceTypes.Embedded;
|
|
2232
|
-
};
|
|
2233
|
-
var getMobileVendor = function getMobileVendor(_ref9) {
|
|
2234
|
-
var vendor = _ref9.vendor;
|
|
2235
|
-
return setDefaults(vendor);
|
|
2236
|
-
};
|
|
2237
|
-
var getMobileModel = function getMobileModel(_ref10) {
|
|
2238
|
-
var model = _ref10.model;
|
|
2239
|
-
return setDefaults(model);
|
|
2240
|
-
};
|
|
2241
|
-
var getDeviceType = function getDeviceType(_ref11) {
|
|
2242
|
-
var type = _ref11.type;
|
|
2243
|
-
return setDefaults(type, 'browser');
|
|
2244
|
-
}; // os types
|
|
2245
|
-
|
|
2246
|
-
var isAndroidType = function isAndroidType(_ref12) {
|
|
2247
|
-
var name = _ref12.name;
|
|
2248
|
-
return name === OsTypes.Android;
|
|
2249
|
-
};
|
|
2250
|
-
var isWindowsType = function isWindowsType(_ref13) {
|
|
2251
|
-
var name = _ref13.name;
|
|
2252
|
-
return name === OsTypes.Windows;
|
|
2253
|
-
};
|
|
2254
|
-
var isMacOsType = function isMacOsType(_ref14) {
|
|
2255
|
-
var name = _ref14.name;
|
|
2256
|
-
return name === OsTypes.MAC_OS;
|
|
2257
|
-
};
|
|
2258
|
-
var isWinPhoneType = function isWinPhoneType(_ref15) {
|
|
2259
|
-
var name = _ref15.name;
|
|
2260
|
-
return name === OsTypes.WindowsPhone;
|
|
2261
|
-
};
|
|
2262
|
-
var isIOSType = function isIOSType(_ref16) {
|
|
2263
|
-
var name = _ref16.name;
|
|
2264
|
-
return name === OsTypes.IOS;
|
|
2265
|
-
};
|
|
2266
|
-
var getOsVersion = function getOsVersion(_ref17) {
|
|
2267
|
-
var version = _ref17.version;
|
|
2268
|
-
return setDefaults(version);
|
|
2269
|
-
};
|
|
2270
|
-
var getOsName = function getOsName(_ref18) {
|
|
2271
|
-
var name = _ref18.name;
|
|
2272
|
-
return setDefaults(name);
|
|
2273
|
-
}; // browser types
|
|
2274
|
-
|
|
2275
|
-
var isChromeType = function isChromeType(_ref19) {
|
|
2276
|
-
var name = _ref19.name;
|
|
2277
|
-
return name === BrowserTypes.Chrome;
|
|
2278
|
-
};
|
|
2279
|
-
var isFirefoxType = function isFirefoxType(_ref20) {
|
|
2280
|
-
var name = _ref20.name;
|
|
2281
|
-
return name === BrowserTypes.Firefox;
|
|
2282
|
-
};
|
|
2283
|
-
var isChromiumType = function isChromiumType(_ref21) {
|
|
2284
|
-
var name = _ref21.name;
|
|
2285
|
-
return name === BrowserTypes.Chromium;
|
|
2286
|
-
};
|
|
2287
|
-
var isEdgeType = function isEdgeType(_ref22) {
|
|
2288
|
-
var name = _ref22.name;
|
|
2289
|
-
return name === BrowserTypes.Edge;
|
|
2290
|
-
};
|
|
2291
|
-
var isYandexType = function isYandexType(_ref23) {
|
|
2292
|
-
var name = _ref23.name;
|
|
2293
|
-
return name === BrowserTypes.Yandex;
|
|
2294
|
-
};
|
|
2295
|
-
var isSafariType = function isSafariType(_ref24) {
|
|
2296
|
-
var name = _ref24.name;
|
|
2297
|
-
return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;
|
|
2298
|
-
};
|
|
2299
|
-
var isMobileSafariType = function isMobileSafariType(_ref25) {
|
|
2300
|
-
var name = _ref25.name;
|
|
2301
|
-
return name === BrowserTypes.MobileSafari;
|
|
2302
|
-
};
|
|
2303
|
-
var isOperaType = function isOperaType(_ref26) {
|
|
2304
|
-
var name = _ref26.name;
|
|
2305
|
-
return name === BrowserTypes.Opera;
|
|
2306
|
-
};
|
|
2307
|
-
var isIEType = function isIEType(_ref27) {
|
|
2308
|
-
var name = _ref27.name;
|
|
2309
|
-
return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;
|
|
2310
|
-
};
|
|
2311
|
-
var isMIUIType = function isMIUIType(_ref28) {
|
|
2312
|
-
var name = _ref28.name;
|
|
2313
|
-
return name === BrowserTypes.MIUI;
|
|
2314
|
-
};
|
|
2315
|
-
var isSamsungBrowserType = function isSamsungBrowserType(_ref29) {
|
|
2316
|
-
var name = _ref29.name;
|
|
2317
|
-
return name === BrowserTypes.SamsungBrowser;
|
|
2318
|
-
};
|
|
2319
|
-
var getBrowserFullVersion = function getBrowserFullVersion(_ref30) {
|
|
2320
|
-
var version = _ref30.version;
|
|
2321
|
-
return setDefaults(version);
|
|
2322
|
-
};
|
|
2323
|
-
var getBrowserVersion = function getBrowserVersion(_ref31) {
|
|
2324
|
-
var major = _ref31.major;
|
|
2325
|
-
return setDefaults(major);
|
|
2326
|
-
};
|
|
2327
|
-
var getBrowserName = function getBrowserName(_ref32) {
|
|
2328
|
-
var name = _ref32.name;
|
|
2329
|
-
return setDefaults(name);
|
|
2330
|
-
}; // engine types
|
|
2331
|
-
|
|
2332
|
-
var getEngineName = function getEngineName(_ref33) {
|
|
2333
|
-
var name = _ref33.name;
|
|
2334
|
-
return setDefaults(name);
|
|
2335
|
-
};
|
|
2336
|
-
var getEngineVersion = function getEngineVersion(_ref34) {
|
|
2337
|
-
var version = _ref34.version;
|
|
2338
|
-
return setDefaults(version);
|
|
2339
|
-
};
|
|
2340
|
-
var isElectronType = function isElectronType() {
|
|
2341
|
-
var nav = getNavigatorInstance();
|
|
2342
|
-
var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();
|
|
2343
|
-
return typeof ua === 'string' ? /electron/.test(ua) : false;
|
|
2344
|
-
};
|
|
2345
|
-
var isEdgeChromiumType = function isEdgeChromiumType(ua) {
|
|
2346
|
-
return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;
|
|
2347
|
-
};
|
|
2348
|
-
var getIOS13 = function getIOS13() {
|
|
2349
|
-
var nav = getNavigatorInstance();
|
|
2350
|
-
return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;
|
|
2351
|
-
};
|
|
2352
|
-
var getIPad13 = function getIPad13() {
|
|
2353
|
-
return isIOS13Check('iPad');
|
|
2354
|
-
};
|
|
2355
|
-
var getIphone13 = function getIphone13() {
|
|
2356
|
-
return isIOS13Check('iPhone');
|
|
2357
|
-
};
|
|
2358
|
-
var getIPod13 = function getIPod13() {
|
|
2359
|
-
return isIOS13Check('iPod');
|
|
2360
|
-
};
|
|
2361
|
-
var getUseragent = function getUseragent(userAg) {
|
|
2362
|
-
return setDefaults(userAg);
|
|
2363
|
-
};
|
|
2364
|
-
|
|
2365
|
-
function buildSelectorsObject(options) {
|
|
2366
|
-
var _ref = options ? options : UAHelper,
|
|
2367
|
-
device = _ref.device,
|
|
2368
|
-
browser = _ref.browser,
|
|
2369
|
-
os = _ref.os,
|
|
2370
|
-
engine = _ref.engine,
|
|
2371
|
-
ua = _ref.ua;
|
|
2372
|
-
|
|
2373
|
-
return {
|
|
2374
|
-
isSmartTV: isSmartTVType(device),
|
|
2375
|
-
isConsole: isConsoleType(device),
|
|
2376
|
-
isWearable: isWearableType(device),
|
|
2377
|
-
isEmbedded: isEmbeddedType(device),
|
|
2378
|
-
isMobileSafari: isMobileSafariType(browser) || getIPad13(),
|
|
2379
|
-
isChromium: isChromiumType(browser),
|
|
2380
|
-
isMobile: isMobileAndTabletType(device) || getIPad13(),
|
|
2381
|
-
isMobileOnly: isMobileType(device),
|
|
2382
|
-
isTablet: isTabletType(device) || getIPad13(),
|
|
2383
|
-
isBrowser: isBrowserType(device),
|
|
2384
|
-
isDesktop: isBrowserType(device),
|
|
2385
|
-
isAndroid: isAndroidType(os),
|
|
2386
|
-
isWinPhone: isWinPhoneType(os),
|
|
2387
|
-
isIOS: isIOSType(os) || getIPad13(),
|
|
2388
|
-
isChrome: isChromeType(browser),
|
|
2389
|
-
isFirefox: isFirefoxType(browser),
|
|
2390
|
-
isSafari: isSafariType(browser),
|
|
2391
|
-
isOpera: isOperaType(browser),
|
|
2392
|
-
isIE: isIEType(browser),
|
|
2393
|
-
osVersion: getOsVersion(os),
|
|
2394
|
-
osName: getOsName(os),
|
|
2395
|
-
fullBrowserVersion: getBrowserFullVersion(browser),
|
|
2396
|
-
browserVersion: getBrowserVersion(browser),
|
|
2397
|
-
browserName: getBrowserName(browser),
|
|
2398
|
-
mobileVendor: getMobileVendor(device),
|
|
2399
|
-
mobileModel: getMobileModel(device),
|
|
2400
|
-
engineName: getEngineName(engine),
|
|
2401
|
-
engineVersion: getEngineVersion(engine),
|
|
2402
|
-
getUA: getUseragent(ua),
|
|
2403
|
-
isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),
|
|
2404
|
-
isYandex: isYandexType(browser),
|
|
2405
|
-
deviceType: getDeviceType(device),
|
|
2406
|
-
isIOS13: getIOS13(),
|
|
2407
|
-
isIPad13: getIPad13(),
|
|
2408
|
-
isIPhone13: getIphone13(),
|
|
2409
|
-
isIPod13: getIPod13(),
|
|
2410
|
-
isElectron: isElectronType(),
|
|
2411
|
-
isEdgeChromium: isEdgeChromiumType(ua),
|
|
2412
|
-
isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),
|
|
2413
|
-
isWindows: isWindowsType(os),
|
|
2414
|
-
isMacOs: isMacOsType(os),
|
|
2415
|
-
isMIUI: isMIUIType(browser),
|
|
2416
|
-
isSamsungBrowser: isSamsungBrowserType(browser)
|
|
2417
|
-
};
|
|
2418
|
-
}
|
|
2419
|
-
|
|
2420
|
-
var isSmartTV = isSmartTVType(device);
|
|
2421
|
-
var isConsole = isConsoleType(device);
|
|
2422
|
-
var isWearable = isWearableType(device);
|
|
2423
|
-
var isEmbedded = isEmbeddedType(device);
|
|
2424
|
-
var isMobileSafari = isMobileSafariType(browser) || getIPad13();
|
|
2425
|
-
var isChromium = isChromiumType(browser);
|
|
2426
|
-
var isMobile = isMobileAndTabletType(device) || getIPad13();
|
|
2427
|
-
var isMobileOnly = isMobileType(device);
|
|
2428
|
-
var isTablet = isTabletType(device) || getIPad13();
|
|
2429
|
-
var isBrowser = isBrowserType(device);
|
|
2430
|
-
var isDesktop = isBrowserType(device);
|
|
2431
|
-
var isAndroid = isAndroidType(os);
|
|
2432
|
-
var isWinPhone = isWinPhoneType(os);
|
|
2433
|
-
var isIOS = isIOSType(os) || getIPad13();
|
|
2434
|
-
var isChrome = isChromeType(browser);
|
|
2435
|
-
var isFirefox = isFirefoxType(browser);
|
|
2436
|
-
var isSafari = isSafariType(browser);
|
|
2437
|
-
var isOpera = isOperaType(browser);
|
|
2438
|
-
var isIE = isIEType(browser);
|
|
2439
|
-
var osVersion = getOsVersion(os);
|
|
2440
|
-
var osName = getOsName(os);
|
|
2441
|
-
var fullBrowserVersion = getBrowserFullVersion(browser);
|
|
2442
|
-
var browserVersion = getBrowserVersion(browser);
|
|
2443
|
-
var browserName = getBrowserName(browser);
|
|
2444
|
-
var mobileVendor = getMobileVendor(device);
|
|
2445
|
-
var mobileModel = getMobileModel(device);
|
|
2446
|
-
var engineName = getEngineName(engine);
|
|
2447
|
-
var engineVersion = getEngineVersion(engine);
|
|
2448
|
-
var getUA = getUseragent(ua);
|
|
2449
|
-
var isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);
|
|
2450
|
-
var isYandex = isYandexType(browser);
|
|
2451
|
-
var deviceType = getDeviceType(device);
|
|
2452
|
-
var isIOS13 = getIOS13();
|
|
2453
|
-
var isIPad13 = getIPad13();
|
|
2454
|
-
var isIPhone13 = getIphone13();
|
|
2455
|
-
var isIPod13 = getIPod13();
|
|
2456
|
-
var isElectron = isElectronType();
|
|
2457
|
-
var isEdgeChromium = isEdgeChromiumType(ua);
|
|
2458
|
-
var isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);
|
|
2459
|
-
var isWindows = isWindowsType(os);
|
|
2460
|
-
var isMacOs = isMacOsType(os);
|
|
2461
|
-
var isMIUI = isMIUIType(browser);
|
|
2462
|
-
var isSamsungBrowser = isSamsungBrowserType(browser);
|
|
2463
|
-
var getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {
|
|
2464
|
-
if (!userAgent || typeof userAgent !== 'string') {
|
|
2465
|
-
console.error('No valid user agent string was provided');
|
|
2466
|
-
return;
|
|
2467
|
-
}
|
|
2468
|
-
|
|
2469
|
-
var _UAHelper$parseUserAg = parseUserAgent(userAgent),
|
|
2470
|
-
device = _UAHelper$parseUserAg.device,
|
|
2471
|
-
browser = _UAHelper$parseUserAg.browser,
|
|
2472
|
-
os = _UAHelper$parseUserAg.os,
|
|
2473
|
-
engine = _UAHelper$parseUserAg.engine,
|
|
2474
|
-
ua = _UAHelper$parseUserAg.ua;
|
|
2475
|
-
|
|
2476
|
-
return buildSelectorsObject({
|
|
2477
|
-
device: device,
|
|
2478
|
-
browser: browser,
|
|
2479
|
-
os: os,
|
|
2480
|
-
engine: engine,
|
|
2481
|
-
ua: ua
|
|
2482
|
-
});
|
|
2483
|
-
};
|
|
2484
|
-
|
|
2485
|
-
var AndroidView = function AndroidView(_ref) {
|
|
2486
|
-
var renderWithFragment = _ref.renderWithFragment,
|
|
2487
|
-
children = _ref.children,
|
|
2488
|
-
props = _objectWithoutProperties(_ref, ["renderWithFragment", "children"]);
|
|
2489
|
-
|
|
2490
|
-
return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2491
|
-
};
|
|
2492
|
-
var BrowserView = function BrowserView(_ref2) {
|
|
2493
|
-
var renderWithFragment = _ref2.renderWithFragment,
|
|
2494
|
-
children = _ref2.children,
|
|
2495
|
-
props = _objectWithoutProperties(_ref2, ["renderWithFragment", "children"]);
|
|
2496
|
-
|
|
2497
|
-
return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2498
|
-
};
|
|
2499
|
-
var IEView = function IEView(_ref3) {
|
|
2500
|
-
var renderWithFragment = _ref3.renderWithFragment,
|
|
2501
|
-
children = _ref3.children,
|
|
2502
|
-
props = _objectWithoutProperties(_ref3, ["renderWithFragment", "children"]);
|
|
2503
|
-
|
|
2504
|
-
return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2505
|
-
};
|
|
2506
|
-
var IOSView = function IOSView(_ref4) {
|
|
2507
|
-
var renderWithFragment = _ref4.renderWithFragment,
|
|
2508
|
-
children = _ref4.children,
|
|
2509
|
-
props = _objectWithoutProperties(_ref4, ["renderWithFragment", "children"]);
|
|
2510
|
-
|
|
2511
|
-
return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2512
|
-
};
|
|
2513
|
-
var MobileView = function MobileView(_ref5) {
|
|
2514
|
-
var renderWithFragment = _ref5.renderWithFragment,
|
|
2515
|
-
children = _ref5.children,
|
|
2516
|
-
props = _objectWithoutProperties(_ref5, ["renderWithFragment", "children"]);
|
|
2517
|
-
|
|
2518
|
-
return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2519
|
-
};
|
|
2520
|
-
var TabletView = function TabletView(_ref6) {
|
|
2521
|
-
var renderWithFragment = _ref6.renderWithFragment,
|
|
2522
|
-
children = _ref6.children,
|
|
2523
|
-
props = _objectWithoutProperties(_ref6, ["renderWithFragment", "children"]);
|
|
2524
|
-
|
|
2525
|
-
return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2526
|
-
};
|
|
2527
|
-
var WinPhoneView = function WinPhoneView(_ref7) {
|
|
2528
|
-
var renderWithFragment = _ref7.renderWithFragment,
|
|
2529
|
-
children = _ref7.children,
|
|
2530
|
-
props = _objectWithoutProperties(_ref7, ["renderWithFragment", "children"]);
|
|
2531
|
-
|
|
2532
|
-
return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2533
|
-
};
|
|
2534
|
-
var MobileOnlyView = function MobileOnlyView(_ref8) {
|
|
2535
|
-
var renderWithFragment = _ref8.renderWithFragment,
|
|
2536
|
-
children = _ref8.children;
|
|
2537
|
-
_ref8.viewClassName;
|
|
2538
|
-
_ref8.style;
|
|
2539
|
-
var props = _objectWithoutProperties(_ref8, ["renderWithFragment", "children", "viewClassName", "style"]);
|
|
2540
|
-
|
|
2541
|
-
return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2542
|
-
};
|
|
2543
|
-
var SmartTVView = function SmartTVView(_ref9) {
|
|
2544
|
-
var renderWithFragment = _ref9.renderWithFragment,
|
|
2545
|
-
children = _ref9.children,
|
|
2546
|
-
props = _objectWithoutProperties(_ref9, ["renderWithFragment", "children"]);
|
|
2547
|
-
|
|
2548
|
-
return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2549
|
-
};
|
|
2550
|
-
var ConsoleView = function ConsoleView(_ref10) {
|
|
2551
|
-
var renderWithFragment = _ref10.renderWithFragment,
|
|
2552
|
-
children = _ref10.children,
|
|
2553
|
-
props = _objectWithoutProperties(_ref10, ["renderWithFragment", "children"]);
|
|
2554
|
-
|
|
2555
|
-
return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2556
|
-
};
|
|
2557
|
-
var WearableView = function WearableView(_ref11) {
|
|
2558
|
-
var renderWithFragment = _ref11.renderWithFragment,
|
|
2559
|
-
children = _ref11.children,
|
|
2560
|
-
props = _objectWithoutProperties(_ref11, ["renderWithFragment", "children"]);
|
|
2561
|
-
|
|
2562
|
-
return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2563
|
-
};
|
|
2564
|
-
var CustomView = function CustomView(_ref12) {
|
|
2565
|
-
var renderWithFragment = _ref12.renderWithFragment,
|
|
2566
|
-
children = _ref12.children;
|
|
2567
|
-
_ref12.viewClassName;
|
|
2568
|
-
_ref12.style;
|
|
2569
|
-
var condition = _ref12.condition,
|
|
2570
|
-
props = _objectWithoutProperties(_ref12, ["renderWithFragment", "children", "viewClassName", "style", "condition"]);
|
|
2571
|
-
|
|
2572
|
-
return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null;
|
|
2573
|
-
};
|
|
2574
|
-
|
|
2575
|
-
function withOrientationChange(WrappedComponent) {
|
|
2576
|
-
return /*#__PURE__*/function (_React$Component) {
|
|
2577
|
-
_inherits(_class, _React$Component);
|
|
2578
|
-
|
|
2579
|
-
function _class(props) {
|
|
2580
|
-
var _this;
|
|
2581
|
-
|
|
2582
|
-
_classCallCheck(this, _class);
|
|
2583
|
-
|
|
2584
|
-
_this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));
|
|
2585
|
-
_this.isEventListenerAdded = false;
|
|
2586
|
-
_this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));
|
|
2587
|
-
_this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));
|
|
2588
|
-
_this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));
|
|
2589
|
-
_this.state = {
|
|
2590
|
-
isLandscape: false,
|
|
2591
|
-
isPortrait: false
|
|
2592
|
-
};
|
|
2593
|
-
return _this;
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
_createClass(_class, [{
|
|
2597
|
-
key: "handleOrientationChange",
|
|
2598
|
-
value: function handleOrientationChange() {
|
|
2599
|
-
if (!this.isEventListenerAdded) {
|
|
2600
|
-
this.isEventListenerAdded = true;
|
|
2601
|
-
}
|
|
2602
|
-
|
|
2603
|
-
var orientation = window.innerWidth > window.innerHeight ? 90 : 0;
|
|
2604
|
-
this.setState({
|
|
2605
|
-
isPortrait: orientation === 0,
|
|
2606
|
-
isLandscape: orientation === 90
|
|
2607
|
-
});
|
|
2608
|
-
}
|
|
2609
|
-
}, {
|
|
2610
|
-
key: "onOrientationChange",
|
|
2611
|
-
value: function onOrientationChange() {
|
|
2612
|
-
this.handleOrientationChange();
|
|
2613
|
-
}
|
|
2614
|
-
}, {
|
|
2615
|
-
key: "onPageLoad",
|
|
2616
|
-
value: function onPageLoad() {
|
|
2617
|
-
this.handleOrientationChange();
|
|
2618
|
-
}
|
|
2619
|
-
}, {
|
|
2620
|
-
key: "componentDidMount",
|
|
2621
|
-
value: function componentDidMount() {
|
|
2622
|
-
if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefined && isMobile) {
|
|
2623
|
-
if (!this.isEventListenerAdded) {
|
|
2624
|
-
this.handleOrientationChange();
|
|
2625
|
-
window.addEventListener("load", this.onPageLoad, false);
|
|
2626
|
-
} else {
|
|
2627
|
-
window.removeEventListener("load", this.onPageLoad, false);
|
|
2628
|
-
}
|
|
2629
|
-
|
|
2630
|
-
window.addEventListener("resize", this.onOrientationChange, false);
|
|
2631
|
-
}
|
|
2632
|
-
}
|
|
2633
|
-
}, {
|
|
2634
|
-
key: "componentWillUnmount",
|
|
2635
|
-
value: function componentWillUnmount() {
|
|
2636
|
-
window.removeEventListener("resize", this.onOrientationChange, false);
|
|
2637
|
-
}
|
|
2638
|
-
}, {
|
|
2639
|
-
key: "render",
|
|
2640
|
-
value: function render() {
|
|
2641
|
-
return React__default.createElement(WrappedComponent, _extends({}, this.props, {
|
|
2642
|
-
isLandscape: this.state.isLandscape,
|
|
2643
|
-
isPortrait: this.state.isPortrait
|
|
2644
|
-
}));
|
|
2645
|
-
}
|
|
2646
|
-
}]);
|
|
2647
|
-
|
|
2648
|
-
return _class;
|
|
2649
|
-
}(React__default.Component);
|
|
2650
|
-
}
|
|
2651
|
-
|
|
2652
|
-
function useMobileOrientation() {
|
|
2653
|
-
var _useState = React.useState(function () {
|
|
2654
|
-
var orientation = window.innerWidth > window.innerHeight ? 90 : 0;
|
|
2655
|
-
return {
|
|
2656
|
-
isPortrait: orientation === 0,
|
|
2657
|
-
isLandscape: orientation === 90,
|
|
2658
|
-
orientation: orientation === 0 ? 'portrait' : 'landscape'
|
|
2659
|
-
};
|
|
2660
|
-
}),
|
|
2661
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
2662
|
-
state = _useState2[0],
|
|
2663
|
-
setState = _useState2[1];
|
|
2664
|
-
|
|
2665
|
-
var handleOrientationChange = React.useCallback(function () {
|
|
2666
|
-
var orientation = window.innerWidth > window.innerHeight ? 90 : 0;
|
|
2667
|
-
var next = {
|
|
2668
|
-
isPortrait: orientation === 0,
|
|
2669
|
-
isLandscape: orientation === 90,
|
|
2670
|
-
orientation: orientation === 0 ? 'portrait' : 'landscape'
|
|
2671
|
-
};
|
|
2672
|
-
state.orientation !== next.orientation && setState(next);
|
|
2673
|
-
}, [state.orientation]);
|
|
2674
|
-
React.useEffect(function () {
|
|
2675
|
-
if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefined && isMobile) {
|
|
2676
|
-
handleOrientationChange();
|
|
2677
|
-
window.addEventListener("load", handleOrientationChange, false);
|
|
2678
|
-
window.addEventListener("resize", handleOrientationChange, false);
|
|
2679
|
-
}
|
|
2680
|
-
|
|
2681
|
-
return function () {
|
|
2682
|
-
window.removeEventListener("resize", handleOrientationChange, false);
|
|
2683
|
-
window.removeEventListener("load", handleOrientationChange, false);
|
|
2684
|
-
};
|
|
2685
|
-
}, [handleOrientationChange]);
|
|
2686
|
-
return state;
|
|
2687
|
-
}
|
|
2688
|
-
|
|
2689
|
-
function useDeviceData(userAgent) {
|
|
2690
|
-
var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;
|
|
2691
|
-
return parseUserAgent(hookUserAgent);
|
|
2692
|
-
}
|
|
2693
|
-
|
|
2694
|
-
function useDeviceSelectors(userAgent) {
|
|
2695
|
-
var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;
|
|
2696
|
-
var deviceData = useDeviceData(hookUserAgent);
|
|
2697
|
-
var selectors = buildSelectorsObject(deviceData);
|
|
2698
|
-
return [selectors, deviceData];
|
|
2699
|
-
}
|
|
2700
|
-
|
|
2701
|
-
lib.AndroidView = AndroidView;
|
|
2702
|
-
lib.BrowserTypes = BrowserTypes;
|
|
2703
|
-
lib.BrowserView = BrowserView;
|
|
2704
|
-
lib.ConsoleView = ConsoleView;
|
|
2705
|
-
lib.CustomView = CustomView;
|
|
2706
|
-
lib.IEView = IEView;
|
|
2707
|
-
lib.IOSView = IOSView;
|
|
2708
|
-
lib.MobileOnlyView = MobileOnlyView;
|
|
2709
|
-
lib.MobileView = MobileView;
|
|
2710
|
-
lib.OsTypes = OsTypes;
|
|
2711
|
-
lib.SmartTVView = SmartTVView;
|
|
2712
|
-
lib.TabletView = TabletView;
|
|
2713
|
-
lib.WearableView = WearableView;
|
|
2714
|
-
lib.WinPhoneView = WinPhoneView;
|
|
2715
|
-
lib.browserName = browserName;
|
|
2716
|
-
lib.browserVersion = browserVersion;
|
|
2717
|
-
lib.deviceDetect = deviceDetect;
|
|
2718
|
-
lib.deviceType = deviceType;
|
|
2719
|
-
lib.engineName = engineName;
|
|
2720
|
-
lib.engineVersion = engineVersion;
|
|
2721
|
-
lib.fullBrowserVersion = fullBrowserVersion;
|
|
2722
|
-
lib.getSelectorsByUserAgent = getSelectorsByUserAgent;
|
|
2723
|
-
lib.getUA = getUA;
|
|
2724
|
-
lib.isAndroid = isAndroid;
|
|
2725
|
-
lib.isBrowser = isBrowser;
|
|
2726
|
-
lib.isChrome = isChrome;
|
|
2727
|
-
lib.isChromium = isChromium;
|
|
2728
|
-
lib.isConsole = isConsole;
|
|
2729
|
-
lib.isDesktop = isDesktop;
|
|
2730
|
-
lib.isEdge = isEdge;
|
|
2731
|
-
lib.isEdgeChromium = isEdgeChromium;
|
|
2732
|
-
lib.isElectron = isElectron;
|
|
2733
|
-
lib.isEmbedded = isEmbedded;
|
|
2734
|
-
lib.isFirefox = isFirefox;
|
|
2735
|
-
lib.isIE = isIE;
|
|
2736
|
-
var isIOS_1 = lib.isIOS = isIOS;
|
|
2737
|
-
lib.isIOS13 = isIOS13;
|
|
2738
|
-
lib.isIPad13 = isIPad13;
|
|
2739
|
-
lib.isIPhone13 = isIPhone13;
|
|
2740
|
-
lib.isIPod13 = isIPod13;
|
|
2741
|
-
lib.isLegacyEdge = isLegacyEdge;
|
|
2742
|
-
lib.isMIUI = isMIUI;
|
|
2743
|
-
lib.isMacOs = isMacOs;
|
|
2744
|
-
lib.isMobile = isMobile;
|
|
2745
|
-
lib.isMobileOnly = isMobileOnly;
|
|
2746
|
-
lib.isMobileSafari = isMobileSafari;
|
|
2747
|
-
lib.isOpera = isOpera;
|
|
2748
|
-
lib.isSafari = isSafari;
|
|
2749
|
-
lib.isSamsungBrowser = isSamsungBrowser;
|
|
2750
|
-
lib.isSmartTV = isSmartTV;
|
|
2751
|
-
lib.isTablet = isTablet;
|
|
2752
|
-
lib.isWearable = isWearable;
|
|
2753
|
-
lib.isWinPhone = isWinPhone;
|
|
2754
|
-
lib.isWindows = isWindows;
|
|
2755
|
-
lib.isYandex = isYandex;
|
|
2756
|
-
lib.mobileModel = mobileModel;
|
|
2757
|
-
lib.mobileVendor = mobileVendor;
|
|
2758
|
-
lib.osName = osName;
|
|
2759
|
-
lib.osVersion = osVersion;
|
|
2760
|
-
lib.parseUserAgent = parseUserAgent;
|
|
2761
|
-
lib.setUserAgent = setUserAgent;
|
|
2762
|
-
lib.useDeviceData = useDeviceData;
|
|
2763
|
-
lib.useDeviceSelectors = useDeviceSelectors;
|
|
2764
|
-
lib.useMobileOrientation = useMobileOrientation;
|
|
2765
|
-
lib.withOrientationChange = withOrientationChange;
|
|
633
|
+
const audio = "data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8=";
|
|
2766
634
|
|
|
635
|
+
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
|
2767
636
|
class BaseWallet {
|
|
2768
|
-
algodClient;
|
|
2769
|
-
algosdk;
|
|
2770
637
|
keepWCAlive;
|
|
2771
|
-
constructor(
|
|
2772
|
-
this.algodClient = new algosdk.Algodv2(token, server, port);
|
|
2773
|
-
this.algosdk = algosdk;
|
|
638
|
+
constructor() {
|
|
2774
639
|
this.keepWCAlive = new Audio();
|
|
2775
640
|
}
|
|
2776
641
|
async healthCheck() {
|
|
2777
|
-
return await
|
|
642
|
+
return await algodClient.healthCheck().do();
|
|
2778
643
|
}
|
|
2779
644
|
async getAccountInfo(address) {
|
|
2780
|
-
const accountInfo = await
|
|
645
|
+
const accountInfo = await algodClient.accountInformation(address).do();
|
|
2781
646
|
if (!accountInfo) {
|
|
2782
647
|
throw new Error("Unable to get account information");
|
|
2783
648
|
}
|
|
2784
649
|
return accountInfo;
|
|
2785
650
|
}
|
|
2786
651
|
async getAssets(address) {
|
|
2787
|
-
const accountInfo = await
|
|
652
|
+
const accountInfo = await algodClient.accountInformation(address).do();
|
|
2788
653
|
if (!accountInfo || accountInfo.assets === undefined) {
|
|
2789
654
|
throw new Error("Unable to get account assets");
|
|
2790
655
|
}
|
|
2791
656
|
return accountInfo.assets;
|
|
2792
657
|
}
|
|
2793
658
|
async waitForConfirmation(txId, timeout = 4) {
|
|
2794
|
-
const confirmation = (await
|
|
659
|
+
const confirmation = (await algosdk__default["default"].waitForConfirmation(algodClient, txId, timeout));
|
|
2795
660
|
return { txId, ...confirmation };
|
|
2796
661
|
}
|
|
2797
662
|
decodeTransaction = (txn, isSigned) => {
|
|
2798
663
|
return isSigned
|
|
2799
|
-
?
|
|
2800
|
-
:
|
|
664
|
+
? algosdk__default["default"].decodeSignedTransaction(new Uint8Array(Buffer.from(txn, "base64"))).txn
|
|
665
|
+
: algosdk__default["default"].decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, "base64")));
|
|
2801
666
|
};
|
|
2802
667
|
logEncodedTransaction(txn, isSigned) {
|
|
2803
668
|
const txnObj = this.decodeTransaction(txn, isSigned);
|
|
2804
669
|
console.log("TRANSACTION", {
|
|
2805
670
|
isSigned,
|
|
2806
|
-
from: txnObj.from &&
|
|
2807
|
-
to: txnObj.to &&
|
|
671
|
+
from: txnObj.from && algosdk__default["default"].encodeAddress(txnObj.from.publicKey),
|
|
672
|
+
to: txnObj.to && algosdk__default["default"].encodeAddress(txnObj.to.publicKey),
|
|
2808
673
|
type: txnObj.type,
|
|
2809
674
|
txn: txnObj,
|
|
2810
675
|
});
|
|
@@ -2825,10 +690,10 @@ class BaseWallet {
|
|
|
2825
690
|
if (type === "u") {
|
|
2826
691
|
const decodedTxn = this.decodeTransaction(txn, false);
|
|
2827
692
|
const from = decodedTxn.from
|
|
2828
|
-
?
|
|
693
|
+
? algosdk__default["default"].encodeAddress(decodedTxn.from.publicKey)
|
|
2829
694
|
: "";
|
|
2830
695
|
const to = decodedTxn.to
|
|
2831
|
-
?
|
|
696
|
+
? algosdk__default["default"].encodeAddress(decodedTxn.to.publicKey)
|
|
2832
697
|
: "";
|
|
2833
698
|
const type = decodedTxn.type || "";
|
|
2834
699
|
const amount = Number(decodedTxn.amount) || 0; // convert from bigint to number
|
|
@@ -2847,7 +712,7 @@ class BaseWallet {
|
|
|
2847
712
|
return groupBy(decodedGroup, "from");
|
|
2848
713
|
}
|
|
2849
714
|
async sendRawTransactions(transactions) {
|
|
2850
|
-
const sentTransaction = await
|
|
715
|
+
const sentTransaction = await algodClient
|
|
2851
716
|
.sendRawTransaction(transactions)
|
|
2852
717
|
.do();
|
|
2853
718
|
if (!sentTransaction) {
|
|
@@ -2863,7 +728,7 @@ class BaseWallet {
|
|
|
2863
728
|
// Playing an audio file prevents Wallet Connect's
|
|
2864
729
|
// web socket connection from being dropped when
|
|
2865
730
|
// iOS goes into background mode
|
|
2866
|
-
if (!
|
|
731
|
+
if (!isIOS) {
|
|
2867
732
|
return;
|
|
2868
733
|
}
|
|
2869
734
|
this.keepWCAlive.src = audio;
|
|
@@ -2873,7 +738,7 @@ class BaseWallet {
|
|
|
2873
738
|
this.keepWCAlive.play();
|
|
2874
739
|
}
|
|
2875
740
|
keepWCAliveStop() {
|
|
2876
|
-
if (!
|
|
741
|
+
if (!isIOS) {
|
|
2877
742
|
return;
|
|
2878
743
|
}
|
|
2879
744
|
this.keepWCAlive.pause();
|
|
@@ -2884,33 +749,24 @@ class BaseWallet {
|
|
|
2884
749
|
* Helpful resources:
|
|
2885
750
|
* https://github.com/perawallet/connect
|
|
2886
751
|
*/
|
|
752
|
+
const peraWallet = new connect.PeraWalletConnect({ shouldShowSignTxnToast: false });
|
|
2887
753
|
class PeraWalletClient extends BaseWallet {
|
|
2888
754
|
#client;
|
|
2889
755
|
id;
|
|
2890
756
|
provider;
|
|
2891
|
-
constructor(
|
|
2892
|
-
super(
|
|
757
|
+
constructor(initWallet) {
|
|
758
|
+
super();
|
|
2893
759
|
this.#client = initWallet.client;
|
|
2894
760
|
this.id = initWallet.id;
|
|
2895
|
-
this.provider = initWallet.
|
|
761
|
+
this.provider = initWallet.provider;
|
|
2896
762
|
}
|
|
2897
763
|
static async init() {
|
|
2898
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
2899
|
-
const initAlgodClient = {
|
|
2900
|
-
algosdk,
|
|
2901
|
-
token: NODE_TOKEN,
|
|
2902
|
-
server: NODE_SERVER,
|
|
2903
|
-
port: NODE_PORT,
|
|
2904
|
-
};
|
|
2905
|
-
const PeraWalletConnect = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@perawallet/connect')); }))
|
|
2906
|
-
.PeraWalletConnect;
|
|
2907
|
-
const peraWallet = new PeraWalletConnect({ shouldShowSignTxnToast: false });
|
|
2908
764
|
const initWallet = {
|
|
2909
765
|
id: exports.PROVIDER_ID.PERA_WALLET,
|
|
2910
766
|
client: peraWallet,
|
|
2911
|
-
|
|
767
|
+
provider: providers[exports.PROVIDER_ID.PERA_WALLET],
|
|
2912
768
|
};
|
|
2913
|
-
return new PeraWalletClient(
|
|
769
|
+
return new PeraWalletClient(initWallet);
|
|
2914
770
|
}
|
|
2915
771
|
async connect(onDisconnect) {
|
|
2916
772
|
this.keepWCAliveStart();
|
|
@@ -2953,13 +809,13 @@ class PeraWalletClient extends BaseWallet {
|
|
|
2953
809
|
for (const [type, txn] of transactions) {
|
|
2954
810
|
if (type === "s") {
|
|
2955
811
|
formattedTransactions.push({
|
|
2956
|
-
...
|
|
812
|
+
...algosdk__default["default"].decodeSignedTransaction(new Uint8Array(Buffer.from(txn, "base64"))),
|
|
2957
813
|
signers: [],
|
|
2958
814
|
});
|
|
2959
815
|
}
|
|
2960
816
|
else {
|
|
2961
817
|
formattedTransactions.push({
|
|
2962
|
-
txn:
|
|
818
|
+
txn: algosdk__default["default"].decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, "base64"))),
|
|
2963
819
|
});
|
|
2964
820
|
}
|
|
2965
821
|
}
|
|
@@ -2968,20 +824,20 @@ class PeraWalletClient extends BaseWallet {
|
|
|
2968
824
|
async signTransactions(activeAdress, transactions) {
|
|
2969
825
|
// Decode the transactions to access their properties.
|
|
2970
826
|
const decodedTxns = transactions.map((txn) => {
|
|
2971
|
-
return
|
|
827
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
2972
828
|
});
|
|
2973
829
|
// Marshal the transactions,
|
|
2974
830
|
// and add the signers property if they shouldn't be signed.
|
|
2975
831
|
const txnsToSign = decodedTxns.reduce((acc, txn, i) => {
|
|
2976
832
|
if (!("txn" in txn) &&
|
|
2977
|
-
|
|
833
|
+
algosdk__default["default"].encodeAddress(txn["snd"]) === activeAdress) {
|
|
2978
834
|
acc.push({
|
|
2979
|
-
txn:
|
|
835
|
+
txn: algosdk__default["default"].decodeUnsignedTransaction(transactions[i]),
|
|
2980
836
|
});
|
|
2981
837
|
}
|
|
2982
838
|
else {
|
|
2983
839
|
acc.push({
|
|
2984
|
-
txn:
|
|
840
|
+
txn: algosdk__default["default"].decodeSignedTransaction(transactions[i]).txn,
|
|
2985
841
|
signers: [],
|
|
2986
842
|
});
|
|
2987
843
|
}
|
|
@@ -3026,44 +882,30 @@ class PeraWalletClient extends BaseWallet {
|
|
|
3026
882
|
}
|
|
3027
883
|
return signedTransactions;
|
|
3028
884
|
}
|
|
3029
|
-
}
|
|
3030
|
-
var peraWalletClient = PeraWalletClient.init().catch((e) => {
|
|
3031
|
-
if (typeof window !== "undefined") {
|
|
3032
|
-
console.error("error initializing PeraWalletClient", e);
|
|
3033
|
-
return;
|
|
3034
|
-
}
|
|
3035
|
-
});
|
|
885
|
+
}
|
|
3036
886
|
|
|
3037
887
|
/**
|
|
3038
888
|
* Helpful resources:
|
|
3039
889
|
* https://github.com/randlabs/myalgo-connect
|
|
3040
890
|
*/
|
|
891
|
+
const myAlgo = new MyAlgoConnect__default["default"]({ disableLedgerNano: false });
|
|
3041
892
|
class MyAlgoWalletClient extends BaseWallet {
|
|
3042
893
|
#client;
|
|
3043
894
|
id;
|
|
3044
895
|
provider;
|
|
3045
|
-
constructor(
|
|
3046
|
-
super(
|
|
896
|
+
constructor(initWallet) {
|
|
897
|
+
super();
|
|
3047
898
|
this.#client = initWallet.client;
|
|
3048
899
|
this.id = initWallet.id;
|
|
3049
|
-
this.provider = initWallet.
|
|
900
|
+
this.provider = initWallet.provider;
|
|
3050
901
|
}
|
|
3051
902
|
static async init() {
|
|
3052
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
3053
|
-
const initAlgodClient = {
|
|
3054
|
-
algosdk,
|
|
3055
|
-
token: NODE_TOKEN,
|
|
3056
|
-
server: NODE_SERVER,
|
|
3057
|
-
port: NODE_PORT,
|
|
3058
|
-
};
|
|
3059
|
-
const MyAlgo = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@randlabs/myalgo-connect')); })).default;
|
|
3060
|
-
const myAlgo = new MyAlgo({ disableLedgerNano: false });
|
|
3061
903
|
const initWallet = {
|
|
3062
904
|
id: exports.PROVIDER_ID.MYALGO_WALLET,
|
|
3063
905
|
client: myAlgo,
|
|
3064
|
-
|
|
906
|
+
provider: providers[exports.PROVIDER_ID.MYALGO_WALLET],
|
|
3065
907
|
};
|
|
3066
|
-
return new MyAlgoWalletClient(
|
|
908
|
+
return new MyAlgoWalletClient(initWallet);
|
|
3067
909
|
}
|
|
3068
910
|
async connect() {
|
|
3069
911
|
const accounts = await this.#client.connect();
|
|
@@ -3088,14 +930,14 @@ class MyAlgoWalletClient extends BaseWallet {
|
|
|
3088
930
|
async signTransactions(activeAdress, transactions) {
|
|
3089
931
|
// Decode the transactions to access their properties.
|
|
3090
932
|
const decodedTxns = transactions.map((txn) => {
|
|
3091
|
-
return
|
|
933
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
3092
934
|
});
|
|
3093
935
|
// Get the unsigned transactions.
|
|
3094
936
|
const txnsToSign = decodedTxns.reduce((acc, txn, i) => {
|
|
3095
937
|
// If the transaction isn't already signed and is to be sent from a connected account,
|
|
3096
938
|
// add it to the arrays of transactions to be signed.
|
|
3097
939
|
if (!("txn" in txn) &&
|
|
3098
|
-
|
|
940
|
+
algosdk__default["default"].encodeAddress(txn["snd"]) === activeAdress) {
|
|
3099
941
|
acc.push(transactions[i]);
|
|
3100
942
|
}
|
|
3101
943
|
return acc;
|
|
@@ -3139,13 +981,7 @@ class MyAlgoWalletClient extends BaseWallet {
|
|
|
3139
981
|
}
|
|
3140
982
|
return signedRawTransactions;
|
|
3141
983
|
}
|
|
3142
|
-
}
|
|
3143
|
-
var myAlgoWalletClient = MyAlgoWalletClient.init().catch((e) => {
|
|
3144
|
-
if (typeof window !== "undefined") {
|
|
3145
|
-
console.error("error initializing MyAlgoWalletClient", e);
|
|
3146
|
-
return;
|
|
3147
|
-
}
|
|
3148
|
-
});
|
|
984
|
+
}
|
|
3149
985
|
|
|
3150
986
|
/**
|
|
3151
987
|
* Helpful resources:
|
|
@@ -3155,20 +991,13 @@ class AlgoSignerClient extends BaseWallet {
|
|
|
3155
991
|
#client;
|
|
3156
992
|
id;
|
|
3157
993
|
provider;
|
|
3158
|
-
constructor(
|
|
3159
|
-
super(
|
|
994
|
+
constructor(initWallet) {
|
|
995
|
+
super();
|
|
3160
996
|
this.#client = initWallet.client;
|
|
3161
997
|
this.id = initWallet.id;
|
|
3162
|
-
this.provider = initWallet.
|
|
998
|
+
this.provider = initWallet.provider;
|
|
3163
999
|
}
|
|
3164
1000
|
static async init() {
|
|
3165
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
3166
|
-
const initAlgodClient = {
|
|
3167
|
-
algosdk,
|
|
3168
|
-
token: NODE_TOKEN,
|
|
3169
|
-
server: NODE_SERVER,
|
|
3170
|
-
port: NODE_PORT,
|
|
3171
|
-
};
|
|
3172
1001
|
if (typeof window == "undefined" ||
|
|
3173
1002
|
window.AlgoSigner === undefined) {
|
|
3174
1003
|
throw new Error("AlgoSigner is not available.");
|
|
@@ -3177,9 +1006,9 @@ class AlgoSignerClient extends BaseWallet {
|
|
|
3177
1006
|
const initWallet = {
|
|
3178
1007
|
id: exports.PROVIDER_ID.ALGO_SIGNER,
|
|
3179
1008
|
client: algoSigner,
|
|
3180
|
-
|
|
1009
|
+
provider: providers[exports.PROVIDER_ID.ALGO_SIGNER],
|
|
3181
1010
|
};
|
|
3182
|
-
return new AlgoSignerClient(
|
|
1011
|
+
return new AlgoSignerClient(initWallet);
|
|
3183
1012
|
}
|
|
3184
1013
|
async connect() {
|
|
3185
1014
|
await this.#client.connect();
|
|
@@ -3229,11 +1058,11 @@ class AlgoSignerClient extends BaseWallet {
|
|
|
3229
1058
|
};
|
|
3230
1059
|
if (type === "s") {
|
|
3231
1060
|
formattedTxn.signers = [];
|
|
3232
|
-
const decoded =
|
|
1061
|
+
const decoded = algosdk__default["default"].decodeSignedTransaction(new Uint8Array(Buffer.from(txn, "base64")));
|
|
3233
1062
|
formattedTxn.txn = this.#client.encoding.msgpackToBase64(decoded.txn.toByte());
|
|
3234
1063
|
}
|
|
3235
1064
|
else {
|
|
3236
|
-
const decoded =
|
|
1065
|
+
const decoded = algosdk__default["default"].decodeUnsignedTransaction(Buffer.from(txn, "base64"));
|
|
3237
1066
|
formattedTxn.txn = this.#client.encoding.msgpackToBase64(decoded.toByte());
|
|
3238
1067
|
}
|
|
3239
1068
|
return formattedTxn;
|
|
@@ -3243,7 +1072,7 @@ class AlgoSignerClient extends BaseWallet {
|
|
|
3243
1072
|
async signTransactions(activeAdress, transactions) {
|
|
3244
1073
|
// Decode the transactions to access their properties.
|
|
3245
1074
|
const decodedTxns = transactions.map((txn) => {
|
|
3246
|
-
return
|
|
1075
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
3247
1076
|
});
|
|
3248
1077
|
// Marshal the transactions,
|
|
3249
1078
|
// and add the signers property if they shouldn't be signed.
|
|
@@ -3252,8 +1081,8 @@ class AlgoSignerClient extends BaseWallet {
|
|
|
3252
1081
|
txn: this.#client.encoding.msgpackToBase64(transactions[i]),
|
|
3253
1082
|
};
|
|
3254
1083
|
if ("txn" in txn ||
|
|
3255
|
-
|
|
3256
|
-
txnObj.txn = this.#client.encoding.msgpackToBase64(
|
|
1084
|
+
algosdk__default["default"].encodeAddress(txn["snd"]) !== activeAdress) {
|
|
1085
|
+
txnObj.txn = this.#client.encoding.msgpackToBase64(algosdk__default["default"].decodeSignedTransaction(transactions[i]).txn.toByte());
|
|
3257
1086
|
txnObj.signers = [];
|
|
3258
1087
|
}
|
|
3259
1088
|
acc.push(txnObj);
|
|
@@ -3290,47 +1119,32 @@ class AlgoSignerClient extends BaseWallet {
|
|
|
3290
1119
|
}, []);
|
|
3291
1120
|
return signedRawTransactions;
|
|
3292
1121
|
}
|
|
3293
|
-
}
|
|
3294
|
-
var algoSignerClient = AlgoSignerClient.init().catch((e) => {
|
|
3295
|
-
if (typeof window !== "undefined") {
|
|
3296
|
-
console.info("error initializing AlgoSigner", e);
|
|
3297
|
-
return;
|
|
3298
|
-
}
|
|
3299
|
-
});
|
|
1122
|
+
}
|
|
3300
1123
|
|
|
3301
1124
|
/**
|
|
3302
1125
|
* Helpful resources:
|
|
3303
1126
|
* https://github.com/blockshake-io/defly-connect
|
|
3304
1127
|
*/
|
|
1128
|
+
const deflyWallet = new deflyConnect.DeflyWalletConnect({
|
|
1129
|
+
shouldShowSignTxnToast: false,
|
|
1130
|
+
});
|
|
3305
1131
|
class DeflyWalletClient extends BaseWallet {
|
|
3306
1132
|
#client;
|
|
3307
1133
|
id;
|
|
3308
1134
|
provider;
|
|
3309
|
-
constructor(
|
|
3310
|
-
super(
|
|
1135
|
+
constructor(initWallet) {
|
|
1136
|
+
super();
|
|
3311
1137
|
this.#client = initWallet.client;
|
|
3312
1138
|
this.id = initWallet.id;
|
|
3313
|
-
this.provider = initWallet.
|
|
1139
|
+
this.provider = initWallet.provider;
|
|
3314
1140
|
}
|
|
3315
1141
|
static async init() {
|
|
3316
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
3317
|
-
const initAlgodClient = {
|
|
3318
|
-
algosdk,
|
|
3319
|
-
token: NODE_TOKEN,
|
|
3320
|
-
server: NODE_SERVER,
|
|
3321
|
-
port: NODE_PORT,
|
|
3322
|
-
};
|
|
3323
|
-
const DeflyWalletConnect = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@blockshake/defly-connect')); }))
|
|
3324
|
-
.DeflyWalletConnect;
|
|
3325
|
-
const deflyWallet = new DeflyWalletConnect({
|
|
3326
|
-
shouldShowSignTxnToast: false,
|
|
3327
|
-
});
|
|
3328
1142
|
const initWallet = {
|
|
3329
1143
|
id: exports.PROVIDER_ID.DEFLY,
|
|
3330
1144
|
client: deflyWallet,
|
|
3331
|
-
|
|
1145
|
+
provider: providers[exports.PROVIDER_ID.DEFLY],
|
|
3332
1146
|
};
|
|
3333
|
-
return new DeflyWalletClient(
|
|
1147
|
+
return new DeflyWalletClient(initWallet);
|
|
3334
1148
|
}
|
|
3335
1149
|
async connect(onDisconnect) {
|
|
3336
1150
|
const accounts = await this.#client.connect();
|
|
@@ -3371,13 +1185,13 @@ class DeflyWalletClient extends BaseWallet {
|
|
|
3371
1185
|
for (const [type, txn] of transactions) {
|
|
3372
1186
|
if (type === "s") {
|
|
3373
1187
|
formattedTransactions.push({
|
|
3374
|
-
...
|
|
1188
|
+
...algosdk__default["default"].decodeSignedTransaction(new Uint8Array(Buffer.from(txn, "base64"))),
|
|
3375
1189
|
signers: [],
|
|
3376
1190
|
});
|
|
3377
1191
|
}
|
|
3378
1192
|
else {
|
|
3379
1193
|
formattedTransactions.push({
|
|
3380
|
-
txn:
|
|
1194
|
+
txn: algosdk__default["default"].decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, "base64"))),
|
|
3381
1195
|
});
|
|
3382
1196
|
}
|
|
3383
1197
|
}
|
|
@@ -3386,20 +1200,20 @@ class DeflyWalletClient extends BaseWallet {
|
|
|
3386
1200
|
async signTransactions(activeAdress, transactions) {
|
|
3387
1201
|
// Decode the transactions to access their properties.
|
|
3388
1202
|
const decodedTxns = transactions.map((txn) => {
|
|
3389
|
-
return
|
|
1203
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
3390
1204
|
});
|
|
3391
1205
|
// Marshal the transactions,
|
|
3392
1206
|
// and add the signers property if they shouldn't be signed.
|
|
3393
1207
|
const txnsToSign = decodedTxns.reduce((acc, txn, i) => {
|
|
3394
1208
|
if (!("txn" in txn) &&
|
|
3395
|
-
|
|
1209
|
+
algosdk__default["default"].encodeAddress(txn["snd"]) === activeAdress) {
|
|
3396
1210
|
acc.push({
|
|
3397
|
-
txn:
|
|
1211
|
+
txn: algosdk__default["default"].decodeUnsignedTransaction(transactions[i]),
|
|
3398
1212
|
});
|
|
3399
1213
|
}
|
|
3400
1214
|
else {
|
|
3401
1215
|
acc.push({
|
|
3402
|
-
txn:
|
|
1216
|
+
txn: algosdk__default["default"].decodeSignedTransaction(transactions[i]).txn,
|
|
3403
1217
|
signers: [],
|
|
3404
1218
|
});
|
|
3405
1219
|
}
|
|
@@ -3438,13 +1252,7 @@ class DeflyWalletClient extends BaseWallet {
|
|
|
3438
1252
|
}
|
|
3439
1253
|
return signedTransactions;
|
|
3440
1254
|
}
|
|
3441
|
-
}
|
|
3442
|
-
var deflyClient = DeflyWalletClient.init().catch((e) => {
|
|
3443
|
-
if (typeof window !== "undefined") {
|
|
3444
|
-
console.error("error initializing DeflyWalletClient", e);
|
|
3445
|
-
return;
|
|
3446
|
-
}
|
|
3447
|
-
});
|
|
1255
|
+
}
|
|
3448
1256
|
|
|
3449
1257
|
/**
|
|
3450
1258
|
* Helpful resources:
|
|
@@ -3454,20 +1262,13 @@ class ExodusClient extends BaseWallet {
|
|
|
3454
1262
|
#client;
|
|
3455
1263
|
id;
|
|
3456
1264
|
provider;
|
|
3457
|
-
constructor(
|
|
3458
|
-
super(
|
|
1265
|
+
constructor(initWallet) {
|
|
1266
|
+
super();
|
|
3459
1267
|
this.#client = initWallet.client;
|
|
3460
1268
|
this.id = initWallet.id;
|
|
3461
|
-
this.provider = initWallet.
|
|
1269
|
+
this.provider = initWallet.provider;
|
|
3462
1270
|
}
|
|
3463
1271
|
static async init() {
|
|
3464
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
3465
|
-
const initAlgodClient = {
|
|
3466
|
-
algosdk,
|
|
3467
|
-
token: NODE_TOKEN,
|
|
3468
|
-
server: NODE_SERVER,
|
|
3469
|
-
port: NODE_PORT,
|
|
3470
|
-
};
|
|
3471
1272
|
if (typeof window == "undefined" ||
|
|
3472
1273
|
window.exodus === undefined) {
|
|
3473
1274
|
throw new Error("Exodus is not available.");
|
|
@@ -3476,9 +1277,9 @@ class ExodusClient extends BaseWallet {
|
|
|
3476
1277
|
const initWallet = {
|
|
3477
1278
|
id: exports.PROVIDER_ID.EXODUS,
|
|
3478
1279
|
client: exodus,
|
|
3479
|
-
|
|
1280
|
+
provider: providers[exports.PROVIDER_ID.EXODUS],
|
|
3480
1281
|
};
|
|
3481
|
-
return new ExodusClient(
|
|
1282
|
+
return new ExodusClient(initWallet);
|
|
3482
1283
|
}
|
|
3483
1284
|
async connect() {
|
|
3484
1285
|
const { address } = await this.#client.connect();
|
|
@@ -3511,14 +1312,14 @@ class ExodusClient extends BaseWallet {
|
|
|
3511
1312
|
async signTransactions(activeAdress, transactions) {
|
|
3512
1313
|
// Decode the transactions to access their properties.
|
|
3513
1314
|
const decodedTxns = transactions.map((txn) => {
|
|
3514
|
-
return
|
|
1315
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
3515
1316
|
});
|
|
3516
1317
|
// Get the unsigned transactions.
|
|
3517
1318
|
const txnsToSign = decodedTxns.reduce((acc, txn, i) => {
|
|
3518
1319
|
// If the transaction isn't already signed and is to be sent from a connected account,
|
|
3519
1320
|
// add it to the arrays of transactions to be signed.
|
|
3520
1321
|
if (!("txn" in txn) &&
|
|
3521
|
-
|
|
1322
|
+
algosdk__default["default"].encodeAddress(txn["snd"]) === activeAdress) {
|
|
3522
1323
|
acc.push(transactions[i]);
|
|
3523
1324
|
}
|
|
3524
1325
|
return acc;
|
|
@@ -3543,7 +1344,7 @@ class ExodusClient extends BaseWallet {
|
|
|
3543
1344
|
const signedRawTransactions = [];
|
|
3544
1345
|
for (const [type, txn] of transactions) {
|
|
3545
1346
|
if (type === "u") {
|
|
3546
|
-
const decoded =
|
|
1347
|
+
const decoded = algosdk__default["default"].decodeUnsignedTransaction(Buffer.from(txn, "base64"));
|
|
3547
1348
|
transactionsToSign.push(decoded.toByte());
|
|
3548
1349
|
}
|
|
3549
1350
|
}
|
|
@@ -3563,13 +1364,7 @@ class ExodusClient extends BaseWallet {
|
|
|
3563
1364
|
}
|
|
3564
1365
|
return signedRawTransactions;
|
|
3565
1366
|
}
|
|
3566
|
-
}
|
|
3567
|
-
var exodusClient = ExodusClient.init().catch((e) => {
|
|
3568
|
-
if (typeof window !== "undefined") {
|
|
3569
|
-
console.info("error initializing ExodusClient", e);
|
|
3570
|
-
return;
|
|
3571
|
-
}
|
|
3572
|
-
});
|
|
1367
|
+
}
|
|
3573
1368
|
|
|
3574
1369
|
const DefaultKMDConfig = {
|
|
3575
1370
|
host: KMD_HOST,
|
|
@@ -3581,30 +1376,23 @@ class KMDWallet extends BaseWallet {
|
|
|
3581
1376
|
walletId;
|
|
3582
1377
|
id;
|
|
3583
1378
|
provider;
|
|
3584
|
-
constructor(
|
|
3585
|
-
super(
|
|
1379
|
+
constructor(initWallet) {
|
|
1380
|
+
super();
|
|
3586
1381
|
this.#client = initWallet.client;
|
|
3587
1382
|
this.id = initWallet.id;
|
|
3588
|
-
this.provider = initWallet.
|
|
1383
|
+
this.provider = initWallet.provider;
|
|
3589
1384
|
this.walletId = "";
|
|
3590
1385
|
}
|
|
3591
1386
|
static async init() {
|
|
3592
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
3593
|
-
const initAlgodClient = {
|
|
3594
|
-
algosdk,
|
|
3595
|
-
token: NODE_TOKEN,
|
|
3596
|
-
server: NODE_SERVER,
|
|
3597
|
-
port: NODE_PORT,
|
|
3598
|
-
};
|
|
3599
1387
|
// TODO: allow diff config options?
|
|
3600
1388
|
const kmdConfig = DefaultKMDConfig;
|
|
3601
|
-
const kmdClient = new
|
|
1389
|
+
const kmdClient = new algosdk__default["default"].Kmd(kmdConfig.token, kmdConfig.host, kmdConfig.port);
|
|
3602
1390
|
const initWallet = {
|
|
3603
1391
|
id: exports.PROVIDER_ID.KMD_WALLET,
|
|
3604
1392
|
client: kmdClient,
|
|
3605
|
-
|
|
1393
|
+
provider: providers[exports.PROVIDER_ID.KMD_WALLET],
|
|
3606
1394
|
};
|
|
3607
|
-
return new KMDWallet(
|
|
1395
|
+
return new KMDWallet(initWallet);
|
|
3608
1396
|
}
|
|
3609
1397
|
async connect() {
|
|
3610
1398
|
// TODO: prompt for wallet and password?
|
|
@@ -3667,7 +1455,7 @@ class KMDWallet extends BaseWallet {
|
|
|
3667
1455
|
async signTransactions(activeAddress, transactions) {
|
|
3668
1456
|
// Decode the transactions to access their properties.
|
|
3669
1457
|
const decodedTxns = transactions.map((txn) => {
|
|
3670
|
-
return
|
|
1458
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
3671
1459
|
});
|
|
3672
1460
|
// Get a handle token
|
|
3673
1461
|
const pw = await this.requestPassword();
|
|
@@ -3683,11 +1471,11 @@ class KMDWallet extends BaseWallet {
|
|
|
3683
1471
|
if (!("snd" in dtxn))
|
|
3684
1472
|
continue;
|
|
3685
1473
|
// Not to be signed by our signer, skip it
|
|
3686
|
-
if (!(
|
|
1474
|
+
if (!(algosdk__default["default"].encodeAddress(dtxn.snd) === activeAddress))
|
|
3687
1475
|
continue;
|
|
3688
1476
|
// overwrite with an empty blob
|
|
3689
1477
|
signedTxns[idx] = new Uint8Array();
|
|
3690
|
-
const txn =
|
|
1478
|
+
const txn = algosdk__default["default"].Transaction.from_obj_for_encoding(dtxn);
|
|
3691
1479
|
signingPromises.push(this.#client.signTransaction(token, pw, txn));
|
|
3692
1480
|
}
|
|
3693
1481
|
const signingResults = await Promise.all(signingPromises);
|
|
@@ -3706,47 +1494,33 @@ class KMDWallet extends BaseWallet {
|
|
|
3706
1494
|
signEncodedTransactions(transactions) {
|
|
3707
1495
|
throw new Error("Method not implemented.");
|
|
3708
1496
|
}
|
|
3709
|
-
}
|
|
3710
|
-
var kmdClient = KMDWallet.init().catch((e) => {
|
|
3711
|
-
if (typeof window !== "undefined") {
|
|
3712
|
-
console.info("error initializing kmd client", e);
|
|
3713
|
-
return;
|
|
3714
|
-
}
|
|
3715
|
-
});
|
|
1497
|
+
}
|
|
3716
1498
|
|
|
1499
|
+
/**
|
|
1500
|
+
* Helpful resources:
|
|
1501
|
+
* https://developer.algorand.org/docs/get-details/walletconnect/
|
|
1502
|
+
*/
|
|
1503
|
+
const walletConnect = new WalletConnect__default["default"]({
|
|
1504
|
+
bridge: "https://bridge.walletconnect.org",
|
|
1505
|
+
qrcodeModal: QRCodeModal__default["default"],
|
|
1506
|
+
});
|
|
3717
1507
|
class WalletConnectClient extends BaseWallet {
|
|
3718
1508
|
#client;
|
|
3719
1509
|
id;
|
|
3720
1510
|
provider;
|
|
3721
|
-
constructor(
|
|
3722
|
-
super(
|
|
3723
|
-
this.#client =
|
|
3724
|
-
bridge: initWallet.bridge,
|
|
3725
|
-
qrcodeModal: initWallet.qrcodeModal,
|
|
3726
|
-
...initWallet.WalletConnectOptions,
|
|
3727
|
-
});
|
|
1511
|
+
constructor(initWallet) {
|
|
1512
|
+
super();
|
|
1513
|
+
this.#client = initWallet.client;
|
|
3728
1514
|
this.id = initWallet.id;
|
|
3729
|
-
this.provider = initWallet.
|
|
1515
|
+
this.provider = initWallet.provider;
|
|
3730
1516
|
}
|
|
3731
1517
|
static async init() {
|
|
3732
|
-
const algosdk = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algosdk')); })).default;
|
|
3733
|
-
const initAlgodClient = {
|
|
3734
|
-
algosdk,
|
|
3735
|
-
token: NODE_TOKEN,
|
|
3736
|
-
server: NODE_SERVER,
|
|
3737
|
-
port: NODE_PORT,
|
|
3738
|
-
};
|
|
3739
|
-
const WalletConnect = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@walletconnect/client')); })).default;
|
|
3740
|
-
const QRCodeModal = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('algorand-walletconnect-qrcode-modal')); }))
|
|
3741
|
-
.default;
|
|
3742
1518
|
const initWallet = {
|
|
3743
1519
|
id: exports.PROVIDER_ID.WALLET_CONNECT,
|
|
3744
|
-
|
|
3745
|
-
|
|
3746
|
-
qrcodeModal: QRCodeModal,
|
|
3747
|
-
providers: providers,
|
|
1520
|
+
client: walletConnect,
|
|
1521
|
+
provider: providers[exports.PROVIDER_ID.WALLET_CONNECT],
|
|
3748
1522
|
};
|
|
3749
|
-
return new WalletConnectClient(
|
|
1523
|
+
return new WalletConnectClient(initWallet);
|
|
3750
1524
|
}
|
|
3751
1525
|
async connect() {
|
|
3752
1526
|
let chainId = 416001;
|
|
@@ -3822,8 +1596,8 @@ class WalletConnectClient extends BaseWallet {
|
|
|
3822
1596
|
txn: txn[1],
|
|
3823
1597
|
};
|
|
3824
1598
|
if (txn[0] === "s") {
|
|
3825
|
-
const decodedTxn =
|
|
3826
|
-
formattedTxn.txn = Buffer.from(
|
|
1599
|
+
const decodedTxn = algosdk__default["default"].decodeSignedTransaction(new Uint8Array(Buffer.from(txn[1], "base64")));
|
|
1600
|
+
formattedTxn.txn = Buffer.from(algosdk__default["default"].encodeUnsignedTransaction(decodedTxn.txn)).toString("base64");
|
|
3827
1601
|
formattedTxn.signers = [];
|
|
3828
1602
|
}
|
|
3829
1603
|
return formattedTxn;
|
|
@@ -3833,13 +1607,13 @@ class WalletConnectClient extends BaseWallet {
|
|
|
3833
1607
|
async signTransactions(activeAdress, transactions) {
|
|
3834
1608
|
// Decode the transactions to access their properties.
|
|
3835
1609
|
const decodedTxns = transactions.map((txn) => {
|
|
3836
|
-
return
|
|
1610
|
+
return algosdk__default["default"].decodeObj(txn);
|
|
3837
1611
|
});
|
|
3838
1612
|
// Marshal the transactions,
|
|
3839
1613
|
// and add the signers property if they shouldn't be signed.
|
|
3840
1614
|
const txnsToSign = decodedTxns.reduce((acc, txn, i) => {
|
|
3841
1615
|
if (!("txn" in txn) &&
|
|
3842
|
-
|
|
1616
|
+
algosdk__default["default"].encodeAddress(txn["snd"]) === activeAdress) {
|
|
3843
1617
|
acc.push({
|
|
3844
1618
|
txn: Buffer.from(transactions[i]).toString("base64"),
|
|
3845
1619
|
});
|
|
@@ -3890,48 +1664,38 @@ class WalletConnectClient extends BaseWallet {
|
|
|
3890
1664
|
}, []);
|
|
3891
1665
|
return signedRawTransactions;
|
|
3892
1666
|
}
|
|
3893
|
-
}
|
|
3894
|
-
var walletconnectClient = WalletConnectClient.init().catch((e) => {
|
|
3895
|
-
if (typeof window !== "undefined") {
|
|
3896
|
-
console.error("error initializing WalletConnectClient", e);
|
|
3897
|
-
return;
|
|
3898
|
-
}
|
|
3899
|
-
});
|
|
1667
|
+
}
|
|
3900
1668
|
|
|
3901
1669
|
const clients = {
|
|
3902
|
-
[exports.PROVIDER_ID.KMD_WALLET]:
|
|
3903
|
-
[exports.PROVIDER_ID.PERA_WALLET]:
|
|
3904
|
-
[exports.PROVIDER_ID.MYALGO_WALLET]:
|
|
3905
|
-
[exports.PROVIDER_ID.ALGO_SIGNER]:
|
|
3906
|
-
[exports.PROVIDER_ID.DEFLY]:
|
|
3907
|
-
[exports.PROVIDER_ID.EXODUS]:
|
|
3908
|
-
[exports.PROVIDER_ID.WALLET_CONNECT]:
|
|
1670
|
+
[exports.PROVIDER_ID.KMD_WALLET]: KMDWallet,
|
|
1671
|
+
[exports.PROVIDER_ID.PERA_WALLET]: PeraWalletClient,
|
|
1672
|
+
[exports.PROVIDER_ID.MYALGO_WALLET]: MyAlgoWalletClient,
|
|
1673
|
+
[exports.PROVIDER_ID.ALGO_SIGNER]: AlgoSignerClient,
|
|
1674
|
+
[exports.PROVIDER_ID.DEFLY]: DeflyWalletClient,
|
|
1675
|
+
[exports.PROVIDER_ID.EXODUS]: ExodusClient,
|
|
1676
|
+
[exports.PROVIDER_ID.WALLET_CONNECT]: WalletConnectClient,
|
|
3909
1677
|
};
|
|
3910
1678
|
|
|
3911
1679
|
const getWalletClient = async (id) => {
|
|
3912
1680
|
if (!id) {
|
|
3913
1681
|
throw new Error("No wallet provider id provided");
|
|
3914
1682
|
}
|
|
3915
|
-
const client = await clients[id]
|
|
1683
|
+
const client = await clients[id].init().catch((e) => {
|
|
1684
|
+
if (typeof window !== "undefined") {
|
|
1685
|
+
console.error("error initializing WalletConnectClient", e);
|
|
1686
|
+
return;
|
|
1687
|
+
}
|
|
1688
|
+
});
|
|
3916
1689
|
if (!client) {
|
|
3917
1690
|
throw new Error(`No wallet client found for provider id: ${id}`);
|
|
3918
1691
|
}
|
|
3919
1692
|
return client;
|
|
3920
|
-
};
|
|
3921
|
-
const formatPrice = (price, isAlgos, options) => {
|
|
3922
|
-
const algos = isAlgos ? price : convertMicroalgosToAlgos(price);
|
|
3923
|
-
return new Intl.NumberFormat(undefined, options).format(algos);
|
|
3924
|
-
};
|
|
3925
|
-
// Formula: amount / (10 ^ decimals)
|
|
3926
|
-
const convertMicroalgosToAlgos = (amount) => {
|
|
3927
|
-
const divisor = new Big(10).pow(6);
|
|
3928
|
-
return new Big(amount).div(divisor).round(6).toNumber();
|
|
3929
1693
|
};
|
|
3930
1694
|
|
|
3931
1695
|
function useWallet() {
|
|
3932
1696
|
const allAccounts = useWalletStore((state) => state.accounts);
|
|
3933
1697
|
const activeAccount = useWalletStore((state) => state.activeAccount);
|
|
3934
|
-
const accounts =
|
|
1698
|
+
const accounts = react.useMemo(() => allAccounts.filter((account) => account.providerId === activeAccount?.providerId), [allAccounts, activeAccount]);
|
|
3935
1699
|
const signTransactions = async (transactions) => {
|
|
3936
1700
|
const walletClient = await getWalletClient(activeAccount?.providerId);
|
|
3937
1701
|
if (!walletClient || !activeAccount?.address) {
|
|
@@ -4015,7 +1779,7 @@ function shallow(objA, objB) {
|
|
|
4015
1779
|
|
|
4016
1780
|
function useConnectWallet(options) {
|
|
4017
1781
|
const { accounts, setActiveAccount: setActiveAccount, activeAccount, clearActiveAccount, addAccounts, removeAccounts, } = useWalletStore(walletStoreSelector, shallow);
|
|
4018
|
-
const providers$1 =
|
|
1782
|
+
const providers$1 = react.useMemo(() => Object.values(providers)
|
|
4019
1783
|
.filter(({ id }) => options?.providers
|
|
4020
1784
|
? options.providers.includes(id)
|
|
4021
1785
|
: id !== exports.PROVIDER_ID.KMD_WALLET)
|
|
@@ -4142,8 +1906,6 @@ exports.NODE_PORT = NODE_PORT;
|
|
|
4142
1906
|
exports.NODE_SERVER = NODE_SERVER;
|
|
4143
1907
|
exports.NODE_TOKEN = NODE_TOKEN;
|
|
4144
1908
|
exports.clients = clients;
|
|
4145
|
-
exports.convertMicroalgosToAlgos = convertMicroalgosToAlgos;
|
|
4146
|
-
exports.formatPrice = formatPrice;
|
|
4147
1909
|
exports.getWalletClient = getWalletClient;
|
|
4148
1910
|
exports.providers = providers;
|
|
4149
1911
|
exports.useConnectWallet = useConnectWallet;
|