2026-02-21 11:02:49 +01:00
"use strict" ; var obsidian _module = require ( "obsidian" ) , view = require ( "@codemirror/view" ) , commands = require ( "@codemirror/commands" ) , lr = require ( "@lezer/lr" ) , language = require ( "@codemirror/language" ) , state = require ( "@codemirror/state" ) ; ; const INITIAL _TIMESTAMP = Date . now ( ) ; var LZString = function ( ) { var r = String . fromCharCode , o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" , n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$" , e = { } ; function t ( r , o ) { if ( ! e [ r ] ) { e [ r ] = { } ; for ( var n = 0 ; n < r . length ; n ++ ) e [ r ] [ r . charAt ( n ) ] = n } return e [ r ] [ o ] } var i = { compressToBase64 : function ( r ) { if ( null == r ) return "" ; var n = i . _compress ( r , 6 , function ( r ) { return o . charAt ( r ) } ) ; switch ( n . length % 4 ) { default : case 0 : return n ; case 1 : return n + "===" ; case 2 : return n + "==" ; case 3 : return n + "=" } } , decompressFromBase64 : function ( r ) { return null == r ? "" : "" == r ? null : i . _decompress ( r . length , 32 , function ( n ) { return t ( o , r . charAt ( n ) ) } ) } , compressToUTF16 : function ( o ) { return null == o ? "" : i . _compress ( o , 15 , function ( o ) { return r ( o + 32 ) } ) + " " } , decompressFromUTF16 : function ( r ) { return null == r ? "" : "" == r ? null : i . _decompress ( r . length , 16384 , function ( o ) { return r . charCodeAt ( o ) - 32 } ) } , compressToUint8Array : function ( r ) { for ( var o = i . compress ( r ) , n = new Uint8Array ( 2 * o . length ) , e = 0 , t = o . length ; e < t ; e ++ ) { var s = o . charCodeAt ( e ) ; n [ 2 * e ] = s >>> 8 , n [ 2 * e + 1 ] = s % 256 } return n } , decompressFromUint8Array : function ( o ) { if ( null == o ) return i . decompress ( o ) ; for ( var n = new Array ( o . length / 2 ) , e = 0 , t = n . length ; e < t ; e ++ ) n [ e ] = 256 * o [ 2 * e ] + o [ 2 * e + 1 ] ; var s = [ ] ; return n . forEach ( function ( o ) { s . push ( r ( o ) ) } ) , i . decompress ( s . join ( "" ) ) } , compressToEncodedURIComponent : function ( r ) { return null == r ? "" : i . _compress ( r , 6 , function ( r ) { return n . charAt ( r ) } ) } , decompressFromEncodedURIComponent : function ( r ) { return null == r ? "" : "" == r ? null : ( r = r . replace ( / /g , "+" ) , i . _decompress ( r . length , 32 , function ( o ) { return t ( n , r . charAt ( o ) ) } ) ) } , compress : function ( o ) { return i . _compress ( o , 16 , function ( o ) { return r ( o ) } ) } , _compress : function ( r , o , n ) { if ( null == r ) return "" ; var e , t , i , s = { } , u = { } , a = "" , p = "" , c = "" , l = 2 , f = 3 , h = 2 , d = [ ] , m = 0 , v = 0 ; for ( i = 0 ; i < r . length ; i += 1 ) if ( a = r . charAt ( i ) , Object . prototype . hasOwnProperty . call ( s , a ) || ( s [ a ] = f ++ , u [ a ] = ! 0 ) , p = c + a , Object . prototype . hasOwnProperty . call ( s , p ) ) c = p ; else { if ( Object . prototype . hasOwnProperty . call ( u , c ) ) { if ( c . charCodeAt ( 0 ) < 256 ) { for ( e = 0 ; e < h ; e ++ ) m <<= 1 , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ ; for ( t = c . charCodeAt ( 0 ) , e = 0 ; e < 8 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 } else { for ( t = 1 , e = 0 ; e < h ; e ++ ) m = m << 1 | t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t = 0 ; for ( t = c . charCodeAt ( 0 ) , e = 0 ; e < 16 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 } 0 == -- l && ( l = Math . pow ( 2 , h ) , h ++ ) , delete u [ c ] } else for ( t = s [ c ] , e = 0 ; e < h ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 ; 0 == -- l && ( l = Math . pow ( 2 , h ) , h ++ ) , s [ p ] = f ++ , c = String ( a ) } if ( "" !== c ) { if ( Object . prototype . hasOwnProperty . call ( u , c ) ) { if ( c . charCodeAt ( 0 ) < 256 ) { for ( e = 0 ; e < h ; e ++ ) m <<= 1 , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ ; for ( t = c . charCodeAt ( 0 ) , e = 0 ; e < 8 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 } else { for ( t = 1 , e = 0 ; e < h ; e ++ ) m = m << 1 | t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t = 0 ; for ( t = c . charCodeAt ( 0 ) , e = 0 ; e < 16 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 } 0 == -- l && ( l = Math . pow ( 2 , h ) , h ++ ) , delete u [ c ] } else for ( t = s [ c ] , e = 0 ; e < h ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 ; 0 == -- l && ( l = Math . pow ( 2 , h ) , h ++ ) } for ( t = 2 , e = 0 ; e < h ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m ) ) , m = 0 ) : v ++ , t >>= 1 ; for ( ; ; ) { if ( m <<= 1 , v == o - 1 ) { d . push ( n ( m ) ) ; break } v ++ } return d . join ( "" ) } , decompress : function ( r ) { return null == r ? "" : "" == r ? null : i . _decompress ( r . length , 32768 , function ( o ) { return r . charCodeAt ( o ) } ) } , _decompress : function ( o , n , e ) { var t , i , s , u , a , p , c , l = [ ] , f = 4 , h = 4 , d = 3 , m = "" , v = [ ] , g = { val : e ( 0 ) , position : n , index : 1 } ; for ( t = 0 ; t < 3 ; t += 1 ) l [ t ] = t ; for ( s = 0 , a = Math . pow ( 2 , 2 ) , p = 1 ; p != a ; ) u = g . val & g . position , g . position >>= 1 , 0 == g . position && ( g . position = n , g . val = e ( g . index ++ ) ) , s |= ( u > 0 ? 1 : 0 ) * p , p <<= 1 ; switch ( s ) { case 0 : for ( s = 0 , a = Math . pow ( 2 , 8 ) , p = 1 ; p != a ; ) u = g . val & g . position , g . position >>= 1 , 0 == g . position && ( g . position = n , g . val = e ( g . index ++ ) ) , s |= ( u > 0 ? 1 : 0 ) * p , p <<= 1 ; c = r ( s ) ; break ; case 1 : for ( s = 0 , a = Math . pow ( 2 , 16 ) , p = 1 ; p != a ; ) u = g . val & g . position , g . position >>= 1 , 0 == g . position && ( g . position = n , g . val = e ( g . index ++ ) ) , s |= ( u > 0 ? 1 : 0 ) * p , p <<= 1 ; c = r ( s ) ; break ; case 2 : return "" } for ( l [ 3 ] = c , i = c , v
2025-11-02 16:26:57 +01:00
let REACT _PACKAGES = ` !function(){var e,t;e=this,t=function(e){function M(e){return null!==e&&"object"==typeof e&&"function"==typeof(e=te&&e[te]||e["@@iterator"])?e:null}function t(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function n(){}function r(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function o(e,t,n){var r,o={},u=null,a=null;if(null!=t)for(r in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(u=""+t.key),t)ae.call(t,r)&&!ie.hasOwnProperty(r)&&(o[r]=t[r]);var i=arguments.length-2;if(1===i)o.children=n;else if(1<i){for(var l=Array(i),c=0;c<i;c++)l[c]=arguments[c+2];o.children=l}if(e&&e.defaultProps)for(r in i=e.defaultProps)void 0===o[r]&&(o[r]=i[r]);return{ $ $ typeof:g,type:e,key:u,ref:a,props:o,_owner:w.current}}function D(e,t){return{ $ $ typeof:g,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function c(e){return"object"==typeof e&&null!==e&&e. $ $ typeof===g}function U(e){var t={"=":"=0",":":"=2"};return" $ "+e.replace(/[=:]/g,function(e){return t[e]})}function f(e,t){return"object"==typeof e&&null!==e&&null!=e.key?U(""+e.key):t.toString(36)}function s(e,t,n,r,o){var u=!1;if(null===(e="undefined"!==(i=typeof e)&&"boolean"!==i?e:null))u=!0;else switch(i){case"string":case"number":u=!0;break;case"object":switch(e. $ $ typeof){case g:case H:u=!0}}if(u)return o=o(u=e),e=""===r?"."+f(u,0):r,ue(o)?(n="",s(o,t,n=null!=e?e.replace(le," $ &/")+"/":n,"",function(e){return e})):null!=o&&(c(o)&&(o=D(o,n+(!o.key||u&&u.key===o.key?"":(""+o.key).replace(le," $ &/")+"/")+e)),t.push(o)),1;if(u=0,r=""===r?".":r+":",ue(e))for(var a=0;a<e.length;a++){var i,l=r+f(i=e[a],a);u+=s(i,t,n,l,o)}else if("function"==typeof(l=M(e)))for(e=l.call(e),a=0;!(i=e.next()).done;)u+=s(i=i.value,t,n,l=r+f(i,a++),o);else if("object"===i)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return u}function u(e,t,n){var r;return null==e||(r=0,s(e,e=[],"","",function(e){return t.call(n,e,r++)})),e}function V(t){var e;if(-1===t._status&&((e=(e=t._result)()).then(function(e){0!==t._status&&-1!==t._status||(t._status=1,t._result=e)},function(e){0!==t._status&&-1!==t._status||(t._status=2,t._result=e)}),-1===t._status)&&(t._status=0,t._result=e),1===t._status)return t._result.default;throw t._result}function a(e,t){var n=e.length;for(e.push(t);0<n;){var r=n-1>>>1,o=e[r];if(!(0<p(o,t)))break;e[r]=t,e[n]=o,n=r}}function i(e){return 0===e.length?null:e[0]}function l(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;for(var r=0,o=e.length,u=o>>>1;r<u;){var a=2*(r+1)-1,i=e[a],l=a+1,c=e[l];if(p(i,n)<0)r=l<o&&p(c,i)<0?(e[r]=c,e[l]=n,l):(e[r]=i,e[a]=n,a);else{if(!(l<o&&p(c,n)<0))break;e[r]=c,e[l]=n,r=l}}}return t}function p(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}function y(e){for(var t=i(E);null!==t;){if(null===t.callback)l(E);else{if(!(t.startTime<=e))break;l(E),t.sortIndex=t.expirationTime,a(C,t)}t=i(E)}}function d(e){var t;j=!1,y(e),I||(null!==i(C)?(I=!0,m(b)):null!==(t=i(E))&&_(d,t.startTime-e))}function b(e,t){I=!1,j&&(j=!1,se(L),L=-1), $ =!0;var n=P;try{for(y(t),R=i(C);null!==R&&(!(R.expirationTime>t)||e&&!q());){var r,o=R.callback;"function"==typeof o?(R.callback=null,P=R.priorityLevel,r=o(R.expirationTime<=t),t=v(),"function"==typeof r?R.callback=r:R===i(C)&&l(C),y(t)):l(C),R=i(C)}var u,a=null!==R||(null!==(u=i(E))&&_(d,u.startTime-t),!1);return a}finally{R=null,P=n, $ =!1}}function q(){return!(v()-de<ye)}function m(e){O=e,T||(T=!0,be())}function _(e,t){L=fe(function(){e(v())},t)}function A(e){throw Error("act(...) is not supported in production builds of React.")}var N,h,B,v,z,g=Symbol.for("react.element"),H=Symbol.for("react.portal"),W=Symbol.for("react.fragment"),Y=Symbol.for("react.strict_mode"),G=Symbol.for("react.profiler"),J=Symbol.for("react.provider"),K=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),X=Symbol.for("react.suspense"),Z=Symbol.for("react.memo"),ee=Symbol.for("react.lazy"),te=S
2026-02-21 11:02:49 +01:00
const unpackExcalidraw = ( ) => LZString . decompressFromBase64 ( " BTCCBoFMEoF4D4DeAiA9gIwFaQMYBdlZY8BPAB0lQDMACSADzNQCc8BnAMg7S1wKNIVqNALaoAJgFcANpAD8YqbIB0DJqzaxIwZpACOkgJa7gyXQEN8yaOF0Hj2s5Et4AtONQjrt / UZNOXAHpMNnpXZkkAOzxDEUhraAAuZCoo / ENUSMJickpacUgqQ0jILgKikuVzEXE5cuLtAG0Aq3AWtw8vNot8YNDwqJi45ABdKCSebCsBXOE1FnY5eY1lAFF6HHNpQ3FmcwB3ABlDdC0dXwdTHoIbOz9Ha / dPbzvL9r6wiOjY + Ogk0DWGy2Oz2RxOZwBACVnPhwFCYXgACIAeQAsnDlNCXMoQvRIYMftAAL7QYBsSDSKjgYCQcB4cCGOBIXR4STMSI0cywRAAVgATABGRJgKB0pmIPDKcQ08CIUDCpmREkAbgAbuZmHRiMAAMwATgAbAAGI02PCwSZ8bKCPJ0RgLTgcZbsLgAQmdbGUkQkkAAKrkuB6GcQuJbpjkhLRFDJShxo7I3fHIF6ff6KFwk8HDFxDKp7RoiMQlsoAQAhSRUKiQZiJVWoHY0I3gLmGOS5rbSVA4ACqkTY5irtfr4kbypwmTYeBokVgqUi6UyIpgiBZbI58gBbG2OG0SRpsABskiAHM8AALKCwcxycw0pIlfY0AHjvt4CL4Fh3jHjsgkL8wIkiXAA0dQAdmFCAYAQRB1U1c05wXSIwGgOVlFVas2AyGdkCNZQdWUI1kDVDUaFQWAQHFKhP1gp9YCbSBYAfJ9mD2P8 + R5A0zTo5V2INV1iGVABqQS8GgUBYAFDgwAkqTxMk6T5Lk2SZIU5TFOIaA5FcHUjQNA1QIAFj1AU + QAPVAeBLKFCyrM07TdP0oyTPMyz4Gs1yBTsnS9MM4yzJstzEgCzytO8xy / Jcqygo8ryHN85zgui2zQripz / I8pK3Niny0siwLguy8KEoy4KoEaPARgPZVV3ZZAonqEpxGQfibWEABJaIdT5UAWPMEg5CYjq8C6nrWLvRJIBJYAbC5OrIgayAmpa2ZaHLStq2VBCYkyadkMQKjmGAGiGNcAU6To4ND0gE9z1cUDlTwAAeQxlWgBj9w + 96 vvI77IFcgAOUzUEadieSkyBzPK4SRmgGGAaBkGeTBmlIbwaHYegeHgdB8HUfRuHLMB7Gkdx0AocEmGCfgInEeRiGybRimMax2nSfJynMcJhGcZRhn8c56nuZJ3n2dhzbPwe57BPut6tBZnn6dFkZqsgVl2QAP0mgE8HMdBZFgVAMXQSdmFnNJtqQ0AUMMKhdT5UCDX + x6rpus8uHMaAao5JCmLWqtDqt6BxcO47YFO86XdPM9w8MbjDEevBXoY4m6fM5QcDPDUAGEfVAPBgEMYS / hGUy / sJy8U9J9PM + YHOCjzgui9h0uAZVtXInV / dY4EJZ5eF + nq + z3P88ZWGJuJI2KzN + cLb2m3gAFSADOd5Qjyjz3VbXXareDo6SJOs7zSbWPI9unVJZe2XPp + uWucrkXGY5vvU75pmqZphW8bfgWP / 7 r / Kd3hfQS59ZZl0FvfRWj8xZe01kBTcb5p6IT2gdPempaT0ljuHLkTYZynzPMqcwj1IivVjvuZ8Nc66QAbuYJuj0TL / TbM / KShhS5j0gI9PkRoDIMILrAQwTCC6mQXnqPkAAfMuBoOA6k8szO + rNBELz5P9URIEnTF0SEjPkhpHpaEDI9HkoEdQGQMnIfcBoDKCQXkaPkOo1HnQFNY2x5Ch713zjQwSNheFeNjvwuRPMWHAD5AZI04jCYcFAsXH + QtkYBPoaE + AfIOAgUiQI2JSjRF4EspIgUPJRG2JgLI8B8i0nKNUaJDGwpSE + NSUIvkQT4kmQ4DklJfjhYlPiZI5JhTf4xKEXE1RBTlYwMMIBZUc0FpNRmJGGgKIAD6AA5ZEvpZmrAABoAAVkSQmWVnSEWc5D5xgIkfOiASRARydwiCopRLQUlNKWkcoFQIHMCqGiscABi5ssLKDIMwVAeB / m5GUACgAym + Yox4xwTinFyLaWE5620iDIaQ / ErYSmYCQFcm92Q0FzJsaQ0hkJEk2HgDOe0iRvkxV7J8glkDIGJeYUlZ5yVEi9nSwC4ABT6XAkuMUtypQykedNBAzBXkkVjvnQ0eoOIzW1P9YJ / 09 Q2BnIEAAOsoURqrGjADkIkRoplGiqpGCMAAVKI4AzQADkMMdXCjkK6VVnl9WqqNZq9V0ATVyEddAI1gRwBkUCKZVV + wTUABJAhQtfDQU2cLFyQRQjRROXtXTAGPiWUkVsuDABTcgJFIh0DVmauRc0rVaCZu4GwEg + bUDSCLXgUM6BUA1ucFkFqXAkUEtRW6VNzZ03IWgKI0RqBgWQEnMhQdrpIgjrHVbQdHaUW6I4KAXFHJkS8HwHeYk5y9QGT5Fc9B4o7mCvlMK + Aoqg40RnPnAyBiBT / RsGRfOAoHFKKDi + ScuKDzQXfXgFcE1wDHmOeAdAiQRkGxLD8jU5JkLNlgMoQUfIDQmqnc4yIJRpDAtQMcEoGo7yCWUKBHJfJkMQYzuYNDFJMPYecIdUS + GjSgTqSR1D6GqMNFw4yNuW8UOr3I8eZQfz6rAA9kBLk4l4DKB5DowwMHTbiddLeK227 / o8sgnypAR6HknqZCMi9JFIj + svE + vUXV722G1NIgyoEeRBxnMmUAkaP2x1jZbcYiB57ztRdbW2KamzMD7YHalrmYC70TQeVe10o7BlQAcxIWDYBrqmPnHewAYuGFcK4RIwl46iTdAKfiZxzCNEMGMQwzYg5B1ZdijkoAOVBOs / u9TEoBVaaefAVAYrNQSuAOYoyBlZVPp5Fymz4Ar3AFAv9AUETHNTjIi5vaXse25itiKFDvalNAUQ8ZIK0EAQelgAAKRBcieZkHmDQctSgaQusKRsGQIkFAZBzCTniMkUskBDAEtHQALzwAAS7u20J7L3QBsHWdd4oeAGAEDex9r7bBfsA5oAdEQABD77jLrscgRwAN / QseAA1n96IyAgfPah1nGu7B7vIAAOJ7CKATnaBbPuyAR / 98 kpPkDklkPgUABKacADW2AI9HTQAnhhsDSBx9IAH8Q2giBkDEEFFIrTJFWLIEQNAzyoG + 991 H5hxCo / 7 JycXkuKQy4B2eSA32udiHQlncj6o7vJAAGrG ++ ztMQ33jyMuN + YLnOBJAw + QAAaUMKqVHx5jeB9QL + GnqJjc1pj20H8JBQfrJPDT93x4ADP13fnmFEEn6QxvRCQ5oOs + ZtPY + / l B y C 1 U x 5 s 9 R / z + Y Q v x e 2 D J 7 Y O X 6 I N A Q W u 5 r 6 n u P J B f T Q + b 3 n g v e w O 9 d 5 o L j / H R O S d D 9 / C C 1 A b I d w 0 / e S w Z g Z e 0 e d 9 L y b o v k e J 9 t 7 2 L H y I 6 F W C + l Q J Q m n o f c 8 j m P N d a s q P 9 9 c / Q M w C F m / m D 7 A 1 E 1 d X 0 h A B F Q G Y D + 3 Q H Q G 1 1 1 x T 2 5 2 u n E C v 1 L E s A J x p w A A l U c 3 x z A C c A A f 6 Q c Q A H N / D / E 8 K / d 5 P 5 E n f / I A y A H X f X Q H K A + a O A n A A n H / Z g P / Z A Z A t 8 E A s A j A r A n A t o A o W Q K H G n X 0 H H Z g W X S g t P M F E g N n G n M F A A W + k E k G 7 1 3 y 7 w D z J x e 1 E P E O S C k J k O 7 x Z 3 h 0 R 0 5 z a B N l Q A J 1 e z D w E L r E i C 2 E D 0 z h P E g D B T + U M O z 0 y C 2 F n 2 + 0 k I 5 D i G P E j 2 k A B V + z 9 3 7 D f 3 g O P E E 3 m i Q J Q P + 2 Y A s L 4 0 g B o I J w C N X y C O S G Y N C I R x c N E E g H c J f y 8 J 1 j w H 9 y 5 y K A F 2 S H D z w B l w 5 y 5 3 0 M M I A H U d h z x b 8 T C H D p A a B n c d Z j w 2 A o 9 F D u c 3 w D D r D S B Z B q j m B T D H D J x p D Z D W j S j O i x D I B Z k 9 8 d h b 9 D B C j P C c c 8 A C A 9 D 2 j D C V D x j x B n t r d G C Q U M d j x f c A U F i S j l j R j Z B Z k P A F j F o a d 1 l M g v D / l F j u d O w y A y A G g R c J C 8 B B j K C 4 9 L A Z i S A a c A B B 8 4 9 g b 7 A A t g P 7 J v N o K H e g P A f n Q w Y 8 L I N Q 7 7 P H V I 3 F X 3 Z w r I 3 w t o R a R / F 3 Z A b Y v 7 W Q B A v Q m u M g G n A A S f E O 6 F i M Y N D 2 r E g A J O Q A 1 D + X 2 G t 0 N 2 x P m R I G k O t 2 P
2025-11-02 16:26:57 +01:00
let { react , reactDOM } = new Function ( ` ${ REACT _PACKAGES } ; return {react: React, reactDOM: ReactDOM}; ` ) ( ) ;
let excalidrawLib = { } ;
const loadMathjaxToSVG = ( ) => new Function ( ` ${ LZString . decompressFromBase64 ( " G4QwTgBAsiAuAWArEAPAKgewMoDUDiAvAGYCuAdgMawCWGZAFLAJQDeARCQM4CmEnsYalTYBuUJG4EOZACbci1MtxlsAhAVgBPAA7cMRCAHMANhgBGIY2njVOAfhPnL12wC5pchUpXqtu / RAA7ooyGIF2wbJh7uSeispqGjp6Bo4Wxg6m6TGy8vE + Sf4GPMZEdiVEriwAvgA0AIoENbVgTdUiAPJmiNxUAHRxSgAKYBi6YFr0YLVsAPqz3JxQGDIkxtxstSygxiTcrqoADNVMLX04AKIASlgAkh0AcgTAGNQyEIdnlzf3T2wAzH0AEzA0TiCBoNq1MhtTrdXqwAZ5YajcaTMgzeaLZardabbaWPYHY6nMh9Ea0QQ0ABeygAMrZYM9Xu9DmJwBAMMRyFRaAxWKRKDQ6BBYPRWAhbH1qLBuABbTgEADaAF1apLONLZQrlSrqmBuLASGAyKK + tpRrAMH5uEqsJo5WYMMYtdwwHAMGAVdyhXzxQTIEzPpINa6FSIDUaTSwlChYK5Bby6P7I8ayATdvtbbAANQ5tWhJSuWAAPm4fXWZEMCGqtbqiIt1utyT6IBkMh9SYY3AarBebw + BCH9QAZCP6I1EQARC4AMQAggBVOloIZXe7rtAATSY7MgrVDMvlmsr1fgIlCLDAAFpr9VAjZ1lMSwRDmP6gAeQ / azhKr3mwRPRlTRd1TE1RRsTUjwVPpOG0YwhG4KYcwARlqT4WGg1wewtSlgNceoTlqbh6wApsbT6A05QwYBJETYUGGYAMIBDSCwxPbgqwQC8MBYbhb3vR8kO4F83xHb9jyVbgVTDdQNF3ETXzHCSYLghCKGE2oUKYUiZwXZdV3XDpNy3AgAFZ1WqcURDJCkgJpelGQIDA9wgahahAAhuDHcssTjTiZE4AAfIL6GoTsGMYYjWDA01wq6Hp + h4WARnI5IOiIEKWHmRsrXmVxVWqRR + BASgUggecwHdTQx3ov1YGilhERyy0MHmLzqhCurkwa7gBU9ehwXqNzTT6hKETIq0KPgEBOA6QIyFStFND6ChLGMege3qJgx0YJV6m9W0Dp02pqCivq6m6xjGuoIh6DYK7EhtAJvJHMg1mMOS + oQUZAggJQ / rQZILiqga2AAYWMWbOBY / zZBhnY9ggNgcywARFEMTamBzNg3JhshrQgEAIAoOh + DAEgqE9TlIHe4xjDYXcrogep / VDUmyHJymrQPIrztOBtWptAg6eMIcvLscb + goA04GEphXAnSbm10LzlZtaFuD + 7 aiMVV7fNmRHFi6nlIqY8FJAe02 + TYIdnoMe1HWdMdHadF0j3dHmGi85SpLVVo2VuicmFilnVvWxhdyD2AxzYd7HTdW3CnKxFTwQEPDTTGNuDjBNreTGLM / AmORzAF9U84s9dqZftWVODMiRL2A / zzAs6H2VRYDrEQfrCf6tYhYHQbATa7DYKXYDx / 7 CY9kAzHWPo2HcV3nVdT3qdsafJ8GZRF50uFEsRHelrdSY0ExBYlhWNYNi2I3iSItA + gACVKmR1jABl + GZAc2XBMWrqRxYMzJChcoymlFnJJurZtDwU0IwSCHkwCGBIHKTisBOBMBChqfURdTQgE2uqU45Zcoq3LAaQwjI3QRXqmAtMEEpRthkFFQWeEtAnRIULFs5AKFUNaIApioYqI0SQswOonC0q6D6DNWQ6xOBTgwBQVB6CaE9T7ByLaPcwCaGAQNcErROAINsKcSEYA + ixjFLuVQT9CzcBEKY8xOdLHqNpgQJ + RswwiCDmSGR79FgKKUWgsgYpmAZ3Af9Wsa1YAUHgEAyQfFh7FlrF4daOiBA6LQGOaxAx267UaGY2KO0Rz1HDvTKYOkUn0x0UHb68BfosT6G6UYYBay9z + gDCAINmn3XBqVAA5JPLw7xfEfwgEQamoRAnoMZuI9WLZJnKOCao66fUrx4IgLXQcQ5XqbRFh9AWbERn + MUYskJTBVqy1lPzcRVlbKASpNQWkMgv7MHsS / N + H8XkEGMK5CgsIJ5Ii8NwE + Ex4EUAvtia + eI76Eg7iSWoFBKKGm0fOIgspWiIqOVcZF1BFizk9D / VkCLpEfO4Ni9GeKCUCLoeBDpqU5S2CQvQEBE4WgSm0SwVmzjqhRJiUAxEkZtHKSRekkaJUyoBHpYyuwArkUrQQJxegzL878jWeEpC9Q2UnHOby2JyrfRqLVfQkeYimAK1lSVCYwqDSWsRLYXp9MLAUAANZ2BgAgAAUqgPoDrjBOudX0VF6KlWAJpaNVlYAdICyRbahWJqdLarqIiwVmgg3UOpcxSQHSulg3dfAL1KAIApsZj3OpfdyFyo0MRS6KqgEAuPqiU + 8 CGpzEvjiG ++ J75HCIoiOUcAkCoEJR8VykhpiNHPjCCgPc + h9oQMgFATRaJgE4HybC5xrh3EeLUI5y7XAdJKa / WRboXm1AWUE + MgCtphrNLOgdKASVHuXTkqZwTCE623aS8lghKVgD3Q + vxX7cWcHxdMFNabf1kjA2it0HlOCaEoHSDAbY90fVrMHVyJAoTaChEQWEqgM1DR9iOA2RtgpBQIxoqQj07bJACCvYwLsHRuzXh6MdRHm7SRaK + Lxd1tqhxKWtMprzo6x3jmYRONGihmjTvAMJWcLF5wNaq0OJcy4aArJXBA1ch2HHrvfJuLd8ynvbgcLutZS31I6UDXQOaR7cDHhPKeBNJ6z3nuWJebB6MsZ5k5wmO8ZB7zqK0fWfR5iyxkCbJT / NmKNCtkppO9sID0d9l52ePMVQ8foKoPj6zYCuWmBOggAmI7MFqFyVUWidHjJHiIQaLItleRCvxa8EASy6ayVMEWji4zinObYkQTAMDmi4LEsxRsdK6qAZCBJzSknVEqcYNJHKwBZLMbYvJXXCnvlKRtMgFTFCpMwndNATA2kQkacPWsocMB1EhCF + YcFwuVWqpFrs51exHYnCFIE4twAoPPRxLisnquDQ5AV180I1YyfsR + Mg9i8xMFUCtkcaARosRClMDHrRnsgBWqQiinB1LlkExtHsnwTunDAEqNAh1qcqlArl1adAomY6CjjvHXCpGE8QjtrG + 963 ImBY20FUVW2QtxLfBucKe0VgwBgZ1JBsOIh4NocAcsOjaAYoqZX3B1hUA11r2cow5QAGluCaG17BXXCIDd8kt1wN0tuybqc8CANYsAnec3U8VU + 6 nSbaE0Op515vLd9uD + z9TOdVeyDnusdTFwUDR5kLHkMfQOhDDQL8LA6mrgXCgB0S46n5xDCGBcB4U5vdzXhFQHTrkYQ1CZ5zAQ3NPQiGZhgIBsU2DmEPgl2jBgS6QLttXRvXMqatCHGQbBo / m / j / FtQHSdqq + H2cuqQNJey8V7YEqfMmxES5 / z4X7f14VR77TxnrPTRFA7DeJ79wgRwBkE2GMBitnFNvavZ9h6cBLBJ3U + nzPR4LAaUMgG / GQT3U7MtdpAeWzLGEQDmTgZ0csB / E0e6PNAtVwZGHMC6docEcKUNGoNvFVImTvdZAFaGagQwBgAFGWbgOWMKOZXQAWCpYgwxJiFTSWavREYPC3SORvFnAFQwQ0eaRaYXLQejNgs1AqPUZmDac2DRFoWoabdodJXREecEGEVmSQ04TDMkCxayVQEgHJJQEQXQ7rZxZibDIwo2WoXDQQ4QhaEFLQKcRYGWagTXAaBqbQU4DsIgPoI2EQdnaUTgdnegGQJgOwPwo2AgCgegVUU9WoVQbSVwDvcI3aKI2Fb5MIs1WwxpeON0FPXaNAJUbQb0IgBNSbJieJJpT0ObBbJbHREgLJIw9bccVoSDPBIpMxEnegPbebA7KpT7WpepcsGolpXBcJAXIFJwoDRgGfCmOfIcagOwAhGoBWZoE7ebYg2InsDEEAFxCAEgWobQMQerQ4X7XaTyI4XccEXDQBbaT7EAMcTZc47ZfaFUHyeYlvMAOSBfLvODJ2BmSTcqUcccRoEpK0NGQQKsXrNfAArPPoF / PkWAvpW4UAywAcJEkUNgPpfguAVlPpXGXojACAV3d3DZWFc5
2026-02-21 11:02:49 +01:00
const PLUGIN _LANGUAGES = { "ru" : " B4Xg3gwg8gcgagUQEoBUD6BVJAZNKpoBiAktggFwBEghCCB8IIKIggAiCAMIILwggHCCBCIIDIgABO4HYQWoEYQFoDYQQKwgHCfwG8s2XoCYQXoG4QWoC4QZqu6tA0iCBOEF6AREGYHVlADQYYALWIAFNBCxIEMdCTJVABCDNAgiCA / CDMGrRKzDy8nBIagMIggJIg7Eam5rwIwADGAIYANgCWACYATlkA7lb2Ti5Ibh5EpBQ0YhF80XGJyWaqaZm5hSXllg4YAELYxADKABJoE3AA4s5TCBAA0lRQAEYAzoV5WQB2vA4Arpv52wAW5LyA + CC07P4avLH + nMyMEkqAEiDs9LyAWRANEFaIxOOxGGE2Pp / nN5vxjjB5gBaFLqJRWBAAWRGCAAIniAIJjBBoBxIKAOZAoYgICZUahKWgGN7hZRvFjscISQA8IHp / gDVLypJwwpicfiiSS0G5sISaYg0LYoFAsVRADggAW + 72 EEKh0mUelE0P57M4nO5fIFQp5IrCvEALCC0XgARgADG6AKS8WicVi0fxcCQ6f1RGIJCSAZhBnTytTrmLx6LRVG9mFZKe40MQsYT5qSJlAsBBGoA8EE4GkYekigHEQCRgiRiHrZfLFMpWYgwCYoQnYXATCBIRwoKiAYhBU / 6 lEHeE9GOxApwrBgHESUPmB0OqIAUEADnFigVDIgnQoNyN4rGYYh5U4dqkA8iAvcdhDTsKwQZZrDuLfuDhzDyi3SElDrLQzwTc9VHYat2BkCdmWUOtA3YXhT0AXBALyvaJHTvXhAjrCRXneCdn0XGBiTIfA3xWVZZnXX8qAAsJgITQ8wmPdh71YGRYgdbQAj4VD0KDSxeGrUVhD0HC8IItgwi4bhF1 / KAVzXH8 / 2 oCs504H1hCPKRkN4NDL2vbDcM + aSiJfSwMxgNBCQmNAEAADQgHtiDxJBCQAdSoMsKyrPgtGeWd / Fif1nnSZt + jbSx8HmeYyDQLElMaW48I0VRADkQWsDVtMQHViXhPjEdhYyvJs + lbUoESxLIigAawKAB7UoDlfWBEFQNAYCgVc8AIJyXPGdyvKoQAsEFoVggLBPVwkiARmFtcsCpUYxQVjTCavqpqWuUcqWwGXg8QGPIDgAcza + BqQc5zXOG7z / 0 + EQWCEcIDTRe0ACoADoAFNen2spdrRCTvoAWwKV83HlUkYAQe66AEHjIgnQwRLraIxAujrPAaNBVgQBAnCcv9vr + yLKt4EAAD5eFJ / 6 otKL7waxq6vFJNwHDlYtrpJ376Yp6naaZgpeAACn8MJbTeEqdz4fxeGwRrTu2H6AEcAEorDxKBPJgbAoEJPE0HGEYPKQABNKhAFoQYFAlBLTdWECDfRiJDzWYUxPlFFQVq6IWyYqgZ8k2dMqRspzJhpJEurhslCVhnzy0rSIQviCRWViDKOjR + tG1PQAkEAMkt85LQBMEDuQAEEBQwBUEEAbBBAAwQUPMwjrtP1siAFVJBx49LJP / OnCMM6zpIc4x / TC8AIhBq9GkdAEoQavy4r0aJ / r / OULLyua4bqwUA8zsIGwDA8UafPU0nGt0YbHe9 / 7 Q / j8SqAuxlFZ3D / U / 3 iUEC7f8IUHU46MfTmgkDxDQ4JALQloAA4KoUtA7ygHFBKZBCAoCmPHY + RskrH3omlTKUFIhCiZG8UEE0OBGCKiVOBCD8yczslMb8BMYD0U0MwAQehZp8HmmfOIu0Ub / FrLnZg9ArCEHGE4bMuZe5 + UiKtFGPJCqPFCpoWgcilBGhYKwf0MhBBPQvFIdivAA4A0GLDTyWYbImLjgnGgtBEYtDPGEVG0Cwrj14NQEs1Bq6bhruqXgJZRo1ysBYjsMdTHdhGAyGxSM + AozIQo5xBci4l3LhPCugBEEAboAMhBq6BNjsEwkHdiCKm7lYhGUT7GqNiSFeJvBJ7TzntXHxS8V5rxLD4vxATLBBJsg4SkhZ0CeQ7NreGkS7ExPkVUzQLiSwT1Gj4QA1CD5wroAOhB57qmoIAehBfH + OyZ03J5jY7FNJNiXEeIIm2INLBKBcSQIJLcR4rxDStk130khJQXCEwqBCOCJQ + gjBOjiLaVgC5dmmOCRYsJDkJSnOsbY5GDijD8LHgk9eSTeApPSfXLJLyzTMHPnwT5oCuS / MdJoWIgLgVdPbp3SxRyoVnLKWMpxkyElTxnqs3gTTV7rzads7FbyP5yV2l8olqN / lkpFDk0F3TekYH6YMnWkKTn0tGfC8ZijngJOmbMhZyzVkbKedXPlZ9BUEu + cSsV5LKHxVJPrNY2DPjpSynomQbQiFMgAYKYUQKEy5XyoVBsJUFpIU + CAsB + p9EeU8mLYQEg5A6OEL6Z86sETkgQHAWkUbRaBEhP4HkvpGCa0sMfcipI2ajh4hBSIqjjQaNoFooQxpJAGnYBBEwftNoNWakcQQvAti7AKPsI4TA2AtvYPENMlhoAOHNg5MgWJX7Gw7OsGgoRAgzTsQAbQ3f4fwehVBxAALoHqwveat6j / QeptCKZgoswiFqnTOu6bdxgwGXepWga7wGRAAIRbp3Xu7h54cWf1iEek9gJRRXKqbAywHYJhXRfdRfAs7sSv3IAAA3Gp + 8 NMg / 27 v3cwMDN5T1qIgZer17xdrCFiMYOs2lAXMC + rwAAJGAHIWRNg / RyB3HAot1YAF8ADUB9iBrHA6u9dHB7z / v3UhAA5KdIojUTgAAcQByaY6x9jnGcjTGIMgvjQmRNieI7wCT4CpPTnw8 + Xgcnao / SyOpr66HYOdgQ0uvqKH511HmBSJcDJzOxAMJhBTSnVPqd4L + 7 d1nCPHtM2esjzpPXko + bwajtHGD0akIx9sbnOqIc8wgOdC7CRQwCx + 9 dkQ7NFAcxFqLMmtBEewgl2t5GUtUZo3RkQDGvq5fg / ljzyGiuobqIQDy87yvYfYbZgAZiUUGP06t4YA7F8DLWL1Javd6jrGWsvnl665 / r6ACtDeK6N8bpIRMOCpNC99U27FyYyPkFTKmfoFDm1kBbS3osraayRmtG3ARbcoyodLXXhA9b6 + 519 hWzvoG6kgHM2BJuVb4Mtgjf3DQA8gZtijqWweZe69lg7cHodIf6nDhyNQoBICoPnI0oJAEOmDLoHHQO8e7X8IAMRApASChwNmHp2RvoChniS2NAYu8EAMgg0zi4VwRE6N4e4gOg8658PbE7ScC + Xe / XFgqGsFSA2ifn6BoBYhzDAaFuu8VmeUWwP1fa9iHF2loWsrIZANcslr9A4i8x0 + NZEbRjbnX8FbUy8K / MDo9vCN8KMzph0cAguO9sWIemdThFQeuPI7Zgl4HCVEXRUuTmZ7wbUs4kwqAioHQGWbaAOmZ4wMQIE4Q + kjOoyC2XhKrkcigHhARRS3jTjIJQnweQcRkHbevdZirck4P4W8hbsxp / QHCZwsBu8oG8xgeij1jQvRHTIFvKgy9 / CQqeeWkD2 / ZXYleE3iUrfvLbeYBMoNaqdp2j2hPo7k + HausuQg / uAqkQ / + BeqQn + 7 eSeE6NghSyAEwPYtkBI9Q3glA1uIEtcSyqSJYMuT + qgmueWpupW0K24wgeuKc / oTwlk0Al0nULkSARsyGZa / 4 eEUs4IZBAY3Cvs5gmI1OSAeAFstk8whIHYTCzQqgQWqYwkds2aIgQWmEEgachULCB23cXYl2yUYwUAdqKBAefATskyoQPEd + co3eGG1u3AmEq0jAPIsQYhCsWQKAP0jkYs542aJUdYwkAAOh4QABAnSNSgxgAHD8ZgB1T8aUy8BeEAAwJQGQgR36wRdU36osBwyIdU6s8R6szmlgr8yAxs0MjkdOQEDoU42aeuIYdaho4gIe2A9hjhVgouz8ZAdkMMPUdIO + tAeCdi38v8Bo80i0NmzoqigQrwGgfOlgSANgaAmhtOlA0xOEyYgOiKDYzANwgA6CCCKzRhjAiUY9pzY / RvYHSCayA6JNr6Kq67ZE5AZIRNQZBfQqZKYqbbD1HICTHTFMJKCiiMDErzTDFPDzGqCLGXzNC9oDhrEbERBbGpiyC8B7EHGAxHFB5VGWbnHg4MYIg3F3EPFPHjGvEDheavz0izED
const PLUGIN _VERSION = "2.20.5" ; function _interopNamespace ( e ) { if ( e && e . _ _esModule ) return e ; var t = Object . create ( null ) ; return e && Object . keys ( e ) . forEach ( ( function ( i ) { if ( "default" !== i ) { var a = Object . getOwnPropertyDescriptor ( e , i ) ; Object . defineProperty ( t , i , a . get ? a : { enumerable : ! 0 , get : function ( ) { return e [ i ] } } ) } } ) ) , t . default = e , Object . freeze ( t ) } var obsidian _module _ _namespace = _interopNamespace ( obsidian _module ) , React _ _namespace = _interopNamespace ( React ) ; let random$3 = e => crypto . getRandomValues ( new Uint8Array ( e ) ) , customRandom = ( e , t , i ) => { let a = ( 2 << Math . log ( e . length - 1 ) / Math . LN2 ) - 1 , n = - ~ ( 1.6 * a * t / e . length ) ; return ( s = t ) => { let r = "" ; for ( ; ; ) { let t = i ( n ) , o = n ; for ( ; o -- ; ) if ( r += e [ t [ o ] & a ] || "" , r . length === s ) return r } } } , customAlphabet = ( e , t = 21 ) => customRandom ( e , t , random$3 ) , nanoid$1 = ( e = 21 ) => crypto . getRandomValues ( new Uint8Array ( e ) ) . reduce ( ( ( e , t ) => e + ( ( t &= 63 ) < 36 ? t . toString ( 36 ) : t < 62 ? ( t - 26 ) . toString ( 36 ) . toUpperCase ( ) : t > 62 ? "-" : "_" ) ) , "" ) ; const durationTreshold = 0 ; function setDebugging ( e ) { DEBUGGING = ! 1 } let DEBUGGING = ! 1 ; const log$2 = console . log . bind ( window . console ) , debug = ( e , t , ... i ) => { console . log ( t , ... i ) } ; class CustomMutationObserver { originalCallback ; observer ; name ; constructor ( e , t ) { this . originalCallback = e , this . observer = null , this . name = t } observe ( e , t ) { this . observer = new MutationObserver ( ( async ( e , t ) => { const i = performance . now ( ) ; await this . originalCallback ( e , t ) ; const a = performance . now ( ) - i ; a > durationTreshold && console . log ( ` Excalidraw ${ this . name } MutationObserver callback took ${ a } ms to execute ` , t ) } ) ) , this . observer . observe ( e , t ) } disconnect ( ) { this . observer && ( this . observer . disconnect ( ) , this . observer = null ) } } class ErrorHandler { static instance ; errorLog = [ ] ; errorNoticeTimeout = 1e4 ; maxLogEntries = 100 ; constructor ( ) { } static getInstance ( ) { return ErrorHandler . instance || ( ErrorHandler . instance = new ErrorHandler ) , ErrorHandler . instance } handleError ( e , t , i = ! 0 , a ) { const n = "string" == typeof e ? new Error ( e ) : e ; if ( console . error ( ` [Excalidraw Error] in ${ t } : ` , n ) , this . errorLog . push ( { error : n , context : t , timestamp : Date . now ( ) } ) , this . errorLog . length > this . maxLogEntries && ( this . errorLog = this . errorLog . slice ( this . errorLog . length - this . maxLogEntries ) ) , i ) { const e = this . formatErrorForUser ( n , t ) ; new obsidian _module . Notice ( e , a || this . errorNoticeTimeout ) } } safeEval ( e , t , i , a ) { try { return i . eval . call ( i , e ) } catch ( e ) { if ( this . handleError ( e , ` SafeEval in ${ t } ` ) , void 0 !== a ) return a ; throw e } } wrapWithTryCatch ( e , t , i ) { try { return e ( ) } catch ( e ) { if ( this . handleError ( e , t ) , void 0 !== i ) return i ; throw e } } formatErrorForUser ( e , t ) { let i = e . message ; return i . includes ( "Cannot read properties of undefined" ) ? i = "A required object was not available. This might be due to a plugin loading issue." : i . includes ( "is not a function" ) ? i = "A required function was not available. This might be due to a plugin version mismatch." : i . length > 100 && ( i = i . substring ( 0 , 100 ) + "..." ) , ` Excalidraw Error: ${ i } (in ${ t } ) ` } getErrorLog ( ) { return [ ... this . errorLog ] } clearErrorLog ( ) { this . errorLog = [ ] } } const errorHandler = ErrorHandler . getInstance ( ) ; let EXCALIDRAW _PLUGIN = null ; const setExcalidrawPlugin = e => { EXCALIDRAW _PLUGIN = e } , THEME = { LIGHT : "light" , DARK : "dark" } , MD _EXCALIDRAW = "# Excalidraw Data" , MD _TEXTELEMENTS = "## Text Elements" , MD _ELEMENTLINKS = "## Element Links" , MD _EMBEDFILES = "## Embedded Files" , MD _DRAWING = "## Drawing" , MD _EX _SECTIONS = [ MD _EXCALIDRAW , MD _TEXTELEMENTS , MD _ELEMENTLINKS , MD _EMBEDFILES , MD _DRAWING ] , ERROR _IFRAME _CONVERSION _CANCELED = "iframe conversion canceled" , LOCALE = localStorage . getItem ( "language" ) ? . toLowerCase ( ) || "en" , CJK _FONTS = "CJK Fonts" , obsidianToExcalidrawMap = { en : "en-US" , af : "af-ZA" , am : "am-ET" , ar : "ar-SA" , eu : "eu-ES" , be : "be-BY" , bg : "bg-BG" , bn : "bn-BD" , ca : "ca-ES" , cs : "cs-CZ" , da : "da-DK" , de : "de-DE" , el : "el-GR" , eo : "eo-EO" , es : "es-ES" , fa : "fa-IR" , "fi-fi" : "fi-FI" , fr : "fr-FR" , gl : "gl-ES" , he : "he-IL" , hi : "hi-IN" , hu : "hu-HU" , id : "id-ID" , it : "it-IT" , ja : "ja-JP" , ko : "ko-KR" , lv : "lv-LV" , ml : "ml-IN" , ms : "ms-MY" , nl : "nl-NL" , no : "nb-NO" , oc : "oc-FR" , pl : "pl-PL" , pt : "pt-PT" , "pt-BR" : "pt-BR" , ro : "ro-RO" , ru : "ru-RU" , sr : "sr-RS" , se : "sv-SE" , sk : "sk-SK" , sq : "sq-AL" , ta : "ta-IN" , te : "te-IN" , th : "th-TH" , tr : "tr-TR" , uk : "uk-UA" , ur : "ur-PK" , vi : "vi-VN" , zh : "zh-CN" , "zh-tw" : "zh-TW" } ; let { sceneCoordsToViewportCoords : sceneCoordsToViewportCoords , viewportCoordsToSceneCoords : vie
2025-11-02 16:26:57 +01:00
/* nosourcemap */