diff --git a/README.md b/README.md index 400a4d43..d5326bd7 100644 --- a/README.md +++ b/README.md @@ -56,14 +56,15 @@ gantt section Q3 2023 Iaas reverce tool :done, 2023-07-01, 92d MVP Framework SEAF :done, 2023-07-01, 92d - MVP mutators :active, 2023-07-01, 150d + POC mutators :done, 2023-07-01, 150d section Q4 2023 - Framework SEAF :active, 2023-10-01, 92d - Time Machine :active, 2023-11-01, 90d - Public metamodel repository :active, 2023-10-01, 90d - section Q1 2024 - Process Disigner tool :2024-01-01, 90d - Architectire Commutiny tool :2024-01-01, 90d + Framework SEAF :done, 2023-10-01, 92d + Time Machine :active, 2023-11-01, 250d + Public metamodel repository :active, 2023-10-01, 200d + section Q2 2024 + MVP mutators :active, 2024-01-01, 200d + Process Disigner tool :2024-06-01, 90d + Architectire Commutiny tool :2024-06-01, 90d click plugins href "https://dochub.info/docs/dochub.plugins.intro" click smartants href "https://dochub.info/docs/dochub.smartants" @@ -119,7 +120,7 @@ DocHub умеет находить проблемы в описании архи ## Расширяемая матамодель -Матемодель DocHub может быть расширена по вашему желанию. Есть возможность как модифицировать +Метамодель DocHub может быть расширена по вашему желанию. Есть возможность как модифицировать уже существующие сущности, так и создавать собственные. Познакомиться с идеей ближе можно в статье [Код архитектуры — это жидкость](https://habr.com/ru/post/701050/). diff --git a/distrib/idea/IDEAPlugin-3.13.0.zip b/distrib/idea/IDEAPlugin-3.14.0.zip similarity index 80% rename from distrib/idea/IDEAPlugin-3.13.0.zip rename to distrib/idea/IDEAPlugin-3.14.0.zip index 166f1026..a3c0fa6c 100644 Binary files a/distrib/idea/IDEAPlugin-3.13.0.zip and b/distrib/idea/IDEAPlugin-3.14.0.zip differ diff --git a/plugins.json b/plugins.json index ae2575f6..e416b939 100644 --- a/plugins.json +++ b/plugins.json @@ -3,6 +3,7 @@ "plugins/html", "plugins/markaper", "plugins/charts", - "plugins/devtool" + "plugins/devtool", + "plugins/svg" ] } diff --git a/plugins/svg/components/SVGDocument.vue b/plugins/svg/components/SVGDocument.vue new file mode 100644 index 00000000..21f8bc7c --- /dev/null +++ b/plugins/svg/components/SVGDocument.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/plugins/svg/index.js b/plugins/svg/index.js new file mode 100644 index 00000000..3a6633fe --- /dev/null +++ b/plugins/svg/index.js @@ -0,0 +1,3 @@ +import svg from './components/SVGDocument.vue'; + +DocHub.documents.register('svg', svg); diff --git a/plugins/svg/package.json b/plugins/svg/package.json new file mode 100644 index 00000000..9db8bca6 --- /dev/null +++ b/plugins/svg/package.json @@ -0,0 +1,13 @@ +{ + "name": "dochub-plugin-svg", + "version": "1.0.0", + "description": "SVG document with templating support", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "I.Ermolin", + "license": "MIT", + "dependencies": { + } +} diff --git a/public/documentation/docs/manual/plugins/root.yaml b/public/documentation/docs/manual/plugins/root.yaml index 14cbea9e..d6173340 100755 --- a/public/documentation/docs/manual/plugins/root.yaml +++ b/public/documentation/docs/manual/plugins/root.yaml @@ -19,7 +19,41 @@ docs: head1: type: test source: examples/example.html + + dochub.plugins.svg_file: + title: Пример использования SVG + type: svg + template: templates/test.svg + source: > + ( + { + "component1": "Название компонента 1", + "line1_text1": "Текст для стрелки" + } + ) + + dochub.plugins.svg_file_error: + title: Проверка svg + type: svg + template: templates/test.svg + source: > + ( + { + "component1": "Название компонента 1", + + /* Намеренно допускаем ошибки */ + /* Описываем несуществующие параметры */ + /* и не указываем необходимые line1_text1 */ + "component2": "Название компонента 2" + } + ) + + dochub.plugins.svg_inline: + title: Проверка вставки svg объекта + type: markdown + source: svg_inline.md + location: DocHub/Руководство/Плагины/Примеры/SVG + dochub.plugins.devtool_new: location: DocHub/Руководство/Плагины/Примеры/DevTool type: devtool - \ No newline at end of file diff --git a/public/documentation/docs/manual/plugins/svg_inline.md b/public/documentation/docs/manual/plugins/svg_inline.md new file mode 100644 index 00000000..fbb035b5 --- /dev/null +++ b/public/documentation/docs/manual/plugins/svg_inline.md @@ -0,0 +1,66 @@ +# Шаблонизация SVG файлов + + +Оригинальный шаблон: +![Шаблон](templates/test.svg) + +Результат применения данных к шаблону: +```yaml + docs: + dochub.plugins.svg_file: + title: Проверка svg + type: svg + location: DocHub/Руководство/Плагины/Примеры/SVG/Пример svg + template: templates/test.svg + source: > + ( + { + "component1": "Название компонента 1", + "line1_text1": "Текст для стрелки" + } + ) +``` + +Результат: +``` +![svg-документ](@document/dochub.plugins.svg_file) +``` + +![svg-документ](@document/dochub.plugins.svg_file) + + +# Проверка заполнения параметров в шаблоне + +Есть возможность проверять корректность заполнения шаблона. Например: + +```yaml + dochub.plugins.svg_file_error: + title: Проверка svg + type: svg + template: templates/test.svg + source: > + ( + { + "component1": "Название компонента 1", + "component2": "Название компонента 2" + } + ) +``` + +В примере намеренно допущены ошибки: +1. Указан несуществующий в шаблоне параметр "component2"; +2. Не указан необходимый параметр "line1_text1". + + +Для выполнения проверки указывается специальный параметр check=1. + +``` +![svg-документ](@document/dochub.plugins.svg_file_error?check=1) +``` + +В результате будет список не найденных параметров в самом шаблоне и в запросе: + +![svg-документ](@document/dochub.plugins.svg_file_error?check=1) + + + diff --git a/public/documentation/docs/manual/plugins/templates/test.svg b/public/documentation/docs/manual/plugins/templates/test.svg new file mode 100644 index 00000000..329c9435 --- /dev/null +++ b/public/documentation/docs/manual/plugins/templates/test.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + +
+
+
+ «Annotation» +
+ {{component1}} +
+
+
+
+ «Annotation»... + +
+
+
+ + + + + + + + + + + + +
+
+
+ {{line1_text1}} +
+
+
+
+ {{line1_text1}} + +
+
+
+
+ + + + Text is not SVG - cannot display + + +
\ No newline at end of file diff --git a/src/assets/libs/smartants.js b/src/assets/libs/smartants.js index 35e0e557..d77d69ad 100644 --- a/src/assets/libs/smartants.js +++ b/src/assets/libs/smartants.js @@ -1 +1 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 Z={2t:"2b-1w-26",1U:"2g-2h-1J",1S:"2d-1s-1J",21:"2j-2k-2l",1F:"1P-T"},2m=23,2s=10,2p=5;18 1I(t,e){E o=0,s=0;N(3 e 1w t)o+=e.w*e.h,s=7.Y(s,e.w);3 a=[{x:0,y:0,w:7.Y(7.2q(7.1R(o/.2r)),s,e||0),h:1/0,W:[]}];E r=0,h=0,i=[];N(3 e 1w t)N(E t=a.z-1;t>=0;t--){3 o=a[t];9(!(e.w>o.w||e.h>o.h&&a.1u)){9(e.h>o.h&&!a.1u){3 s=e.h-o.h,r=o.y+o.h,h=o.y;a.j((e=>{e.y>=r?e.y+=s:e.y>=h&&e.y+e.h>=r?e.h+=s:t&&(a.1u=!0)}))}9(e.x=o.x,e.y=o.y,i.C(e),h=7.Y(h,e.y+e.h),r=7.Y(r,e.x+e.w),e.w===o.w&&e.h===o.h){3 e=a.2i();tt)&&(6.8.x=t),(D===6.8.y||6.8.y>e)&&(6.8.y=e),(D===6.8.G||6.8.G=0&&t>=0&&e<=a&&t<=o},i=(t,e)=>!r[`${e}:${t}`],l=(t,e)=>r[`${e}:${t}`]||0,n=(t,e,o)=>r[`${e}:${t}`]=o;E u={};3 d=(t,e,o,s)=>e>=t.x-s&&e<=t.G+s&&o>=t.y-s&&o<=t.M+s,c=(e,o,s,a)=>{3 r=t.j[e].S;g d(r,o,s,a)},x=(e,o,s,a)=>{3 r=t.j[e].S;g o>=r.x-a&&o<=r.G+a&&s>r.y&&sr.x&&o=r.y-a&&s<=r.M+a},y=(e,o,s)=>{3 a=t.j[e].R;g d(a,o,s,0)},b=(e,o,s)=>{N(3 a 11 t.j){9(t.j[a].R&&y(a,o,s))g!0;9(!(t.j[a].V.O||e.2e(a)>=0)&&c(a,o,s,1))g!0}g!1},m=18(t){9(t.z<2)g[];3 e=[t[0]],o=t.z;E s=t[0].x,a=t[0].y;N(E r=1;r{E r=[],h=e.x,i=e.y;N(;h!==t.x||i!==t.y;){E u=-1,d=o*a;3 c=[{x:-1,y:0,v:l(h-1,i)},{x:0,y:-1,v:l(h,i-1)},{x:1,y:0,v:l(h+1,i)},{x:0,y:1,v:l(h,i+1)}].j(((e,o)=>{3 s=t.x===h+e.x&&t.y===i+e.y;g(s||e.v>0&&e.v!t.j[e.P]||!t.j[e.Q])).1c((t=>{3 e=`1A:Нетобъектовдлясвязи[${t.P}${t.1d}${t.Q}]`;k.C(e),17.27(e)})),(e=(e=(e=e.1p((e=>t.j[e.P]&&t.j[e.Q]))).j((e=>{3 o=t.j[e.P],s=t.j[e.Q];g z=7.1R(7.1B(o.J-s.J+(o.A-s.A)/2,2)+7.1B(o.K-s.K+(o.B-s.B)/2,2)),{...e,z:z}}))).29(((t,e)=>t.z-e.z))).j((e=>{r={};3 o=t.j[e.P],a=t.j[e.Q];9(!o||!a){9(6.I={19:Z.21,1r:e,1b:`Нетобъектовдлясвязи[${e.P}${e.1d}${e.Q}]`},s)g 1k 17.I(6.I);1h 6.I}{3 r={H:e.P},d={H:e.Q},c=5,x={x:7.q(o.J+c),w:7.q(o.A-2*c),y:7.q(o.K+c),h:7.q(o.B-2*c)},y={x:7.q(a.J+c),w:7.q(a.A-2*c),y:7.q(a.K+c),h:7.q(a.B-2*c)};9(r.y=7.q((.5*x.h+x.y)/6.F),d.y=7.q((.5*y.h+y.y)/6.F),r.x=7.q((.5*x.w+x.x)/6.F),d.x=7.q((.5*y.w+y.x)/6.F),!((e,o)=>{9(!h(e.x,e.y)||!h(o.x,o.y))g;E s=[{x:e.x,y:e.y}];3 a=[];N(3 s 11 t.j)(s.20(e.H)||s.20(o.H))&&a.C(s);3 r=(t,e)=>{3 o=[];g h(t+1,e)&&i(t+1,e)&&!b(a,t+1,e)&&o.C({y:e,x:t+1,v:l(t,e)+1}),h(t-1,e)&&i(t-1,e)&&!b(a,t-1,e)&&o.C({y:e,x:t-1,v:l(t,e)+1}),h(t,e+1)&&i(t,e+1)&&!b(a,t,e+1)&&o.C({y:e+1,x:t,v:l(t,e)+1}),h(t,e-1)&&i(t,e-1)&&!b(a,t,e-1)&&o.C({y:e-1,x:t,v:l(t,e)+1}),o};E d=!1,c=[],x=0,y=[];N(;s.z&&!d;){3 t=[];N(E e=0;ei||7.1f(s.y-o.y)>x){n(s.x,s.y,s.v+2),y.C(s);2n}n(s.x,s.y,s.v+1),t.C({x:s.x,y:s.y})}}}s=t,s.z||(y.z?(x++,x<=24?s=y:(s=[...y,...c],c=[]),y=[]):(s=c,c=[]))}1Q m,f;g d})(r,d)){9(6.I={19:Z.1S,1r:e,1b:`Немогупроложитьмаршрутот${e.P}${e.1d}${e.Q}`},s)g 1k 17.I(6.I);1h 6.I}{3 t=f(r,d).j((t=>{1Q e,o;g e=t.x,o=t.y,u[`${o}:${e}`]=!0,t.x=7.q(t.x*6.F+.5*6.F),t.y=7.q(t.y*6.F+.5*6.F),6.1n(t.x,t.y,t.x+1,t.y+1),t})),s=(t,e,o)=>{9(e.y===o.y){9(e.xt.J+t.A)g e.x=t.J+t.A+5,D;9(e.yt.K+t.B)g{x:e.x,y:t.K+t.B+5}}14{9(e.yt.K+t.B)g e.y=t.K+t.B+5,D;9(e.xt.J+t.A)g{x:t.J+t.A+5,y:e.y}}g D};9(t.z>1){3 e=s(a,t[0],t[1]),r=s(o,t[t.z-1],t[t.z-2]);e&&t.25(e),r&&t.C(r)}p.C({H:`${7.q(2c*7.2a())}:${e.P}${e.1d}${e.Q}`,1r:e,1s:m(t)})}}})),[p,k]},1W(t){3 e={},o={};g 13.1V(t).1c((([s,a])=>{3 r=[],h={};s.1G(".").1c((s=>{r.C(s);3 i=r.1j("."),l=r.2M(0,r.z-1).1j(".");t[i]&&(!t[i].12&&o[l]&&(t[i].12=o[l]),h[i]=t[i],t[i].12?(o[i]=t[i].12,e[a.12]={...e[a.12],...h}):e.1e={...e.1e,...h})}))})),e},1a(e,o,s,a=0,r=0){3 h={O:{},T:"$1g"},i={};N(3 t 11 e){E o=h;3 s=[];t.1G(".").j((t=>{s.C(t);3 a=s.1j(".");o.O[t]||(o.O[t]={H:a,1M:(e[a]||{}).1M,1y:(e[a]||{}).1y,1H:(e[a]||{}).1H,1i:(e[a]||{}).1i||a,O:{},T:(e[a]||{}).T||"$1P"}),o=o.O[t]}))}3 l=(e,s)=>{3 a=[];N(3 t 11 e.O){3 o=e.O[t];l(o),a.C(o)}9(a.z){3 r={};E h={1m:-1,H:D};a.j((e=>{E s=0;3 a=o.1p((t=>(t.P===e.H||t.Q===e.H)&&(s=7.Y(s,(t.1i||"").z),!0))),i=7.Y(7.q(a.z*t/4),6.X,10*s),l={V:e,15:a,X:i,w:e.L.A+i,h:e.L.B+i};l.15.z>h.1m&&(h.1m=l.15.z,h.H=e.H),r[e.H]=l}));3 l=t=>{3 e=r[t];g e&&(n.C(r[t]),1C r[t],e.15.j((t=>l(t.P)||l(t.Q)))),!1},n=[];N(E t=13.1q(r);t.z;t=13.1q(r))h.H?(l(h.H),h.H=D):l(t[0]);3 u=(e.T?.2I("$")?1k 0:6.16[e.T])||6.16.$1g,{w:d,h:c}=1I(n,s);e.L={A:7.Y(d,u.A),B:c+u.B},e.W=n.j((t=>(t.x+=.5*t.X,t.y+=.5*t.X+u.B,t.A=t.V.L.A,t.B=t.V.L.B,i[t.V.H]=t))),u?.A>0&&(e.1l=u)}14 e.L=6.16[e.T],e.L||(e.L={x:0,y:0,A:1z,B:1z},6.I={19:Z.1F,1b:`Использованнедоступныйсимвол"${e.T}"`},17.I(6.I)),1C e.O};l(h,s);3 n=(t,e,o)=>{N(3 s 11 t){3 a=t[s];9(a.J=a.x+e,a.K=a.y+o,6.1n(a.J,a.K,a.J+a.A,a.K+a.B),a.S={x:a.J/6.F,y:a.K/6.F},a.S.G=7.q(a.S.x+a.A/6.F),a.S.M=7.q(a.S.y+a.B/6.F),a.S.x=7.q(a.S.x),a.S.y=7.q(a.S.y),a.V.W&&n(a.V.W,a.x+e,a.y+o),a.V.1l){3 t=a.V.1l;a.R={x:a.J/6.F,y:a.K/6.F},a.R.G=7.q(a.R.x+t.A/6.F),a.R.M=7.q(a.R.y+t.B/6.F),a.R.x=7.q(a.R.x),a.R.y=7.q(a.R.y)}}};g n(h.W,7.q(.5*6.X+a),7.q(.5*6.X+r)),{U:h,j:i}}}}!18(){3 t={Z:Z,1E:(t,e,o,s,a,r,h,i)=>22 2E(((l,n)=>{3 u=22 1T(s,a,r,i);2D{9(!13.1q(t).z){3 t=u.1a(e,o,h);[t.1X,t.1Y]=u.1v(t,o),t.8=u.8,t.8.M+=a,l(t)}3 s=u.1W(e),r={};E i=0,n=0,d=0,c=!1;3 x=t=>{N(E e 11 t)13.1V(t[e]).1c((([t,e])=>{9("2C"===t)x(e),n=u.8.M,i=0,d({...t,U:{T:"$1g",L:{A:t.U.L.A+e.L.A,B:t.U.L.B+e.L.B},W:[...t.U.W,...e.W],O:{...t.U.O,...e.O}},j:{...t.j,...o}})),{U:{L:{A:0,B:0},W:[],O:{},T:"$1g"},j:{}});[y.1X,y.1Y]=u.1v(y,o),u.8.G{3 o=e.1D.2y,s=e.1D.1x;t.1E(o.2B,o.2v,o.15,o.F,o.X,o.16,o.2F,o.2G).2H((t=>{1t.1N({1O:"2J",1x:s,2K:t})})).1L((t=>{1t.1N({1O:"2L",1x:s,I:t})}))}),!1)}();',62,174,'|||const|||this|Math|valueBox|if|||||||return|||map|||||||round|||||||||length|width|height|push|null|let|trackWidth|dx|id|error|absoluteX|absoluteY|box|dy|for|subitems|from|to|symbolTrackRect|trackRect|symbol|layers|node|boxes|distance|max|ERRORS||in|tag|Object|else|links|symbols|console|function|code|buildGraph|text|forEach|style|default|abs|landscape|throw|title|join|void|symbolBox|count|touchValue|break|filter|keys|link|path|self|fixed|buildTracks|of|queryID|background|32|SmartAnts|pow|delete|data|make|UNDEFINED_SYMBOL|split|opacity|potpack|fail|window|catch|hideTitle|postMessage|result|undefined|var|sqrt|RESTORE_PATH_FAIL|core|TRACK_GEN_FAIL|entries|splitNodesByTag|tracks|warnings|start|includes|NOT_FOUND_OBJECTS|new|80|100|unshift|bound|warn|end|sort|random|out|1e5|restore|indexOf|resetValueBox|track|gen|pop|not|found|objects|MIN_DISTANCE|continue|fill|MARGIN|ceil|95|CHAR_WIDTH|OUT_OF_BOUND|values|nodes|addEventListener|message|params|isArray|Array|grid|row|try|Promise|availableWidth|isDebug|then|startsWith|OK|graph|ERROR|slice|reduce'.split('|'),0,{})) +const _0x27d38a=_0x127c;(function(_0x4428c7,_0x4497b3){const _0xd75853=_0x127c,_0x332329=_0x4428c7();while(!![]){try{const _0x10a23e=parseInt(_0xd75853(0x190))/0x1+-parseInt(_0xd75853(0x15e))/0x2*(-parseInt(_0xd75853(0x16e))/0x3)+parseInt(_0xd75853(0x1b1))/0x4+parseInt(_0xd75853(0x160))/0x5*(parseInt(_0xd75853(0x16c))/0x6)+parseInt(_0xd75853(0x18e))/0x7+-parseInt(_0xd75853(0x166))/0x8+-parseInt(_0xd75853(0x183))/0x9;if(_0x10a23e===_0x4497b3)break;else _0x332329['push'](_0x332329['shift']());}catch(_0x2554b1){_0x332329['push'](_0x332329['shift']());}}}(_0x1aa3,0xe4b0e));const ERRORS={'OUT_OF_BOUND':'out-of-bound','TRACK_GEN_FAIL':'track-gen-fail','RESTORE_PATH_FAIL':_0x27d38a(0x165),'NOT_FOUND_OBJECTS':_0x27d38a(0x158),'UNDEFINED_SYMBOL':_0x27d38a(0x184)},MIN_DISTANCE=0x50,CHAR_WIDTH=0xa,MARGIN=0x5;function potpack(_0x4afaa1,_0x47b7b5){const _0xd9d192=_0x27d38a;let _0x408730=0x0,_0x4a80cb=0x0;for(const _0x47b2fb of _0x4afaa1)_0x408730+=_0x47b2fb['w']*_0x47b2fb['h'],_0x4a80cb=Math[_0xd9d192(0x1b0)](_0x4a80cb,_0x47b2fb['w']);const _0x5b909d=[{'x':0x0,'y':0x0,'w':Math[_0xd9d192(0x1b0)](Math[_0xd9d192(0x164)](Math[_0xd9d192(0x16d)](_0x408730/0.95)),_0x4a80cb,_0x47b7b5||0x0),'h':0x1/0x0,'boxes':[]}];let _0x534cf0=0x0,_0x3b3b18=0x0,_0x13ea9a=[];for(const _0x1cc2d2 of _0x4afaa1)for(let _0x49e8d8=_0x5b909d['length']-0x1;_0x49e8d8>=0x0;_0x49e8d8--){const _0x52d7c7=_0x5b909d[_0x49e8d8];if(!(_0x1cc2d2['w']>_0x52d7c7['w']||_0x1cc2d2['h']>_0x52d7c7['h']&&_0x5b909d[_0xd9d192(0x163)])){if(_0x1cc2d2['h']>_0x52d7c7['h']&&!_0x5b909d[_0xd9d192(0x163)]){const _0x22d459=_0x1cc2d2['h']-_0x52d7c7['h'],_0x59b396=_0x52d7c7['y']+_0x52d7c7['h'],_0x21f83=_0x52d7c7['y'];_0x5b909d[_0xd9d192(0x172)](_0x240757=>{_0x240757['y']>=_0x59b396?_0x240757['y']+=_0x22d459:_0x240757['y']>=_0x21f83&&_0x240757['y']+_0x240757['h']>=_0x59b396?_0x240757['h']+=_0x22d459:_0x49e8d8&&(_0x5b909d['fixed']=!0x0);});}if(_0x1cc2d2['x']=_0x52d7c7['x'],_0x1cc2d2['y']=_0x52d7c7['y'],_0x13ea9a['push'](_0x1cc2d2),_0x3b3b18=Math[_0xd9d192(0x1b0)](_0x3b3b18,_0x1cc2d2['y']+_0x1cc2d2['h']),_0x534cf0=Math[_0xd9d192(0x1b0)](_0x534cf0,_0x1cc2d2['x']+_0x1cc2d2['w']),_0x1cc2d2['w']===_0x52d7c7['w']&&_0x1cc2d2['h']===_0x52d7c7['h']){const _0x3a2e8b=_0x5b909d['pop']();_0x49e8d8<_0x5b909d['length']&&(_0x5b909d[_0x49e8d8]=_0x3a2e8b);}else _0x1cc2d2['h']===_0x52d7c7['h']?(_0x52d7c7['x']+=_0x1cc2d2['w'],_0x52d7c7['w']-=_0x1cc2d2['w']):_0x1cc2d2['w']===_0x52d7c7['w']?(_0x52d7c7['y']+=_0x1cc2d2['h'],_0x52d7c7['h']-=_0x1cc2d2['h']):(_0x5b909d[_0xd9d192(0x19b)]({'x':_0x52d7c7['x']+_0x1cc2d2['w'],'y':_0x52d7c7['y'],'w':_0x52d7c7['w']-_0x1cc2d2['w'],'h':_0x1cc2d2['h']}),_0x52d7c7['y']+=_0x1cc2d2['h'],_0x52d7c7['h']-=_0x1cc2d2['h']);break;}_0x5b909d[_0xd9d192(0x163)]=!0x0;}return{'w':_0x534cf0,'h':_0x3b3b18,'fill':_0x408730/(_0x534cf0*_0x3b3b18)||0x0};}function _0x127c(_0x435b61,_0x58d582){const _0x1aa3d4=_0x1aa3();return _0x127c=function(_0x127ce1,_0x4edec0){_0x127ce1=_0x127ce1-0x158;let _0x5285b7=_0x1aa3d4[_0x127ce1];return _0x5285b7;},_0x127c(_0x435b61,_0x58d582);}function _0x1aa3(){const _0x5588e8=['sort','fixed','ceil','restore-path-fail','1165944wBFKUJ','random','from','symbolTrackRect','isArray','width','162744YYxcmF','sqrt','3886941ClnWga','$undefined','absoluteX','startsWith','map','opacity','params','background','round','Не\x20могу\x20проложить\x20маршрут\x20от\x20','symbols','$landscape','touchValue','$SmartAnts','SmartAnts:\x20Нет\x20объектов\x20для\x20связи\x20[','height','distance','symbolBox','keys','forEach','join','34196445uYjimL','undefined-symbol','TRACK_GEN_FAIL','default','trackRect','buildGraph','ERROR','window','count','trackWidth','box','3683379ZZYiJz','buildTracks','1657451ZVpbBo','includes','absoluteY','symbol','title','entries','tracks','node','queryID','postMessage','unshift','push','style','filter','make','error','slice','message','links','tag','length','split','Что-то\x20пошло\x20не\x20так\x20при\x20восстановлении\x20пути\x20для\x20точки\x20','nodes','hideTitle','grid','catch','UNDEFINED_SYMBOL','landscape','subitems','warn','abs','max','1596732yoEzIJ','data','row','valueBox','\x20start:\x20','boxes','not-found-objects','availableWidth','splitNodesByTag','warnings','Использован\x20недоступный\x20символ\x20\x22','pow','2QfGmgJ','Нет\x20объектов\x20для\x20связи\x20[','185NTVfRM','layers'];_0x1aa3=function(){return _0x5588e8;};return _0x1aa3();}function core(_0x31fa3c,_0x477c1c,_0x2c96d8,_0x1ee171){const _0x4fdf07=_0x27d38a;return{'error':null,'trackWidth':_0x31fa3c||0x5,'distance':Math[_0x4fdf07(0x1b0)](_0x477c1c||0x0,0x50),'symbols':_0x2c96d8||{},'valueBox':{'x':null,'y':null,'dx':null,'dy':null},'resetValueBox'(){this['valueBox']={'x':null,'y':null,'dx':null,'dy':null};},'touchValue'(_0x394103,_0x5eb531,_0x34e9dc,_0x5d9510){const _0x3795cc=_0x4fdf07;(null===this[_0x3795cc(0x1b4)]['x']||this['valueBox']['x']>_0x394103)&&(this[_0x3795cc(0x1b4)]['x']=_0x394103),(null===this['valueBox']['y']||this['valueBox']['y']>_0x5eb531)&&(this[_0x3795cc(0x1b4)]['y']=_0x5eb531),(null===this[_0x3795cc(0x1b4)]['dx']||this[_0x3795cc(0x1b4)]['dx']<_0x34e9dc)&&(this[_0x3795cc(0x1b4)]['dx']=_0x34e9dc),(null===this[_0x3795cc(0x1b4)]['dy']||this['valueBox']['dy']<_0x5d9510)&&(this[_0x3795cc(0x1b4)]['dy']=_0x5d9510);},'buildTracks'(_0x662d56,_0x26f9ff){const _0x5169cd=_0x4fdf07,_0x3b9b9e=Math[_0x5169cd(0x176)](_0x662d56[_0x5169cd(0x161)][_0x5169cd(0x18d)][_0x5169cd(0x16b)]/this[_0x5169cd(0x18c)]*1.1),_0xf38ebe=Math['round'](_0x662d56[_0x5169cd(0x161)][_0x5169cd(0x18d)][_0x5169cd(0x17d)]/this[_0x5169cd(0x18c)]*1.5);let _0x2cfe6f={};const _0x3d8e32=function(_0x51a574,_0x2ac929){return _0x2ac929>=0x0&&_0x51a574>=0x0&&_0x2ac929<=_0xf38ebe&&_0x51a574<=_0x3b9b9e;},_0x32ace2=(_0x175265,_0x5966ae)=>!_0x2cfe6f[_0x5966ae+':'+_0x175265],_0x28b419=(_0xb595d,_0x55368e)=>_0x2cfe6f[_0x55368e+':'+_0xb595d]||0x0,_0x5c70d4=(_0x38b2fb,_0x143240,_0x6552bf)=>_0x2cfe6f[_0x143240+':'+_0x38b2fb]=_0x6552bf;let _0x31081c={};const _0x33647b=(_0x467e2f,_0xf2486b,_0x17b70b,_0x3c006e)=>_0xf2486b>=_0x467e2f['x']-_0x3c006e&&_0xf2486b<=_0x467e2f['dx']+_0x3c006e&&_0x17b70b>=_0x467e2f['y']-_0x3c006e&&_0x17b70b<=_0x467e2f['dy']+_0x3c006e,_0x20f078=(_0x320c02,_0x385c51,_0x14748c,_0x90bd68)=>{const _0x571353=_0x5169cd,_0xf53fe8=_0x662d56[_0x571353(0x172)][_0x320c02][_0x571353(0x187)];return _0x33647b(_0xf53fe8,_0x385c51,_0x14748c,_0x90bd68);},_0x1cdfc5=(_0x3fca14,_0xb0b0d0,_0xe869fc,_0x45563f)=>{const _0x37f298=_0x662d56['map'][_0x3fca14]['trackRect'];return _0xb0b0d0>=_0x37f298['x']-_0x45563f&&_0xb0b0d0<=_0x37f298['dx']+_0x45563f&&_0xe869fc>_0x37f298['y']&&_0xe869fc<_0x37f298['dy']||_0xb0b0d0>_0x37f298['x']&&_0xb0b0d0<_0x37f298['dx']&&_0xe869fc>=_0x37f298['y']-_0x45563f&&_0xe869fc<=_0x37f298['dy']+_0x45563f;},_0x17133e=(_0x179d36,_0x44ea3a,_0x1d6215)=>{const _0x5b0776=_0x5169cd,_0x1c172e=_0x662d56[_0x5b0776(0x172)][_0x179d36][_0x5b0776(0x169)];return _0x33647b(_0x1c172e,_0x44ea3a,_0x1d6215,0x0);},_0x14ea89=(_0x4e76d8,_0x5b1088,_0x3d856d)=>{const _0x470c5b=_0x5169cd;for(const _0x2970c9 in _0x662d56[_0x470c5b(0x172)]){if(_0x662d56[_0x470c5b(0x172)][_0x2970c9][_0x470c5b(0x169)]&&_0x17133e(_0x2970c9,_0x5b1088,_0x3d856d))return!0x0;if(!(_0x662d56[_0x470c5b(0x172)][_0x2970c9][_0x470c5b(0x197)][_0x470c5b(0x1ad)]||_0x4e76d8['indexOf'](_0x2970c9)>=0x0)&&_0x20f078(_0x2970c9,_0x5b1088,_0x3d856d,0x1))return!0x0;}return!0x1;},_0x3cd78d=function(_0x2cfb02){const _0x1c3e49=_0x5169cd;if(_0x2cfb02[_0x1c3e49(0x1a4)]<0x2)return[];const _0x3dfe90=[_0x2cfb02[0x0]],_0x1dda83=_0x2cfb02[_0x1c3e49(0x1a4)];let _0x222098=_0x2cfb02[0x0]['x'],_0x3f2857=_0x2cfb02[0x0]['y'];for(let _0xe1218e=0x1;_0xe1218e<_0x1dda83;_0xe1218e++)_0x222098!==_0x2cfb02[_0xe1218e]['x']&&_0x3f2857!==_0x2cfb02[_0xe1218e]['y']&&(_0x3dfe90[_0x1c3e49(0x19b)](_0x2cfb02[_0xe1218e-0x1]),_0x3dfe90['push'](_0x2cfb02[_0xe1218e]),_0x222098=_0x2cfb02[_0xe1218e]['x'],_0x3f2857=_0x2cfb02[_0xe1218e]['y']);return _0x3dfe90[_0x1c3e49(0x19b)](_0x2cfb02[_0x1dda83-0x1]),_0x3dfe90;},_0x9163a3=(_0x14806b,_0x603415)=>{const _0x119ea5=_0x5169cd;let _0x492a30=[],_0x2ab2ee=_0x603415['x'],_0x2d8aed=_0x603415['y'];for(;_0x2ab2ee!==_0x14806b['x']||_0x2d8aed!==_0x14806b['y'];){let _0x2c9678=-0x1,_0x388c20=_0x3b9b9e*_0xf38ebe;const _0x4b72da=[{'x':-0x1,'y':0x0,'v':_0x28b419(_0x2ab2ee-0x1,_0x2d8aed)},{'x':0x0,'y':-0x1,'v':_0x28b419(_0x2ab2ee,_0x2d8aed-0x1)},{'x':0x1,'y':0x0,'v':_0x28b419(_0x2ab2ee+0x1,_0x2d8aed)},{'x':0x0,'y':0x1,'v':_0x28b419(_0x2ab2ee,_0x2d8aed+0x1)}][_0x119ea5(0x172)]((_0x541397,_0x3bd0e4)=>{const _0x10faff=_0x14806b['x']===_0x2ab2ee+_0x541397['x']&&_0x14806b['y']===_0x2d8aed+_0x541397['y'];return(_0x10faff||_0x541397['v']>0x0&&_0x541397['v']<_0x388c20)&&(_0x2c9678=_0x3bd0e4,_0x388c20=_0x10faff?-0x1:_0x541397['v']),_0x541397;});if(-0x1===_0x2c9678){if(this[_0x119ea5(0x19f)]={'code':ERRORS[_0x119ea5(0x185)],'path':_0x492a30,'start':_0x14806b,'end':_0x603415,'error':{'x':_0x2ab2ee,'y':_0x2d8aed},'text':_0x119ea5(0x1a6)+_0x2ab2ee+':'+_0x2d8aed+_0x119ea5(0x1b5)+_0x14806b['x']+':'+_0x14806b['y']},_0x1ee171)return console[_0x119ea5(0x19f)](this['error']),[];throw this['error'];}if(_0x2ab2ee+=_0x4b72da[_0x2c9678]['x'],_0x2d8aed+=_0x4b72da[_0x2c9678]['y'],_0x5c70d4(_0x2ab2ee,_0x2d8aed,-0x1),_0x1cdfc5(_0x14806b['id'],_0x2ab2ee,_0x2d8aed,0x0))break;_0x1cdfc5(_0x603415['id'],_0x2ab2ee,_0x2d8aed,0x0)?_0x492a30=[]:_0x492a30['push']({'x':_0x2ab2ee,'y':_0x2d8aed});}return _0x492a30;},_0x41401a=[];let _0x5403fb=[];return _0x26f9ff[_0x5169cd(0x19d)](_0x36a992=>!_0x662d56[_0x5169cd(0x172)][_0x36a992[_0x5169cd(0x168)]]||!_0x662d56[_0x5169cd(0x172)][_0x36a992['to']])[_0x5169cd(0x181)](_0x290650=>{const _0x505337=_0x5169cd,_0x2d7437=_0x505337(0x17c)+_0x290650[_0x505337(0x168)]+_0x290650[_0x505337(0x19c)]+_0x290650['to']+']';_0x5403fb['push'](_0x2d7437),console[_0x505337(0x1ae)](_0x2d7437);}),(_0x26f9ff=(_0x26f9ff=(_0x26f9ff=_0x26f9ff[_0x5169cd(0x19d)](_0x309578=>_0x662d56['map'][_0x309578[_0x5169cd(0x168)]]&&_0x662d56['map'][_0x309578['to']]))[_0x5169cd(0x172)](_0x48f3a3=>{const _0x2440fd=_0x5169cd,_0x20c061=_0x662d56[_0x2440fd(0x172)][_0x48f3a3['from']],_0x27f188=_0x662d56[_0x2440fd(0x172)][_0x48f3a3['to']],_0x2ee17e=Math['sqrt'](Math[_0x2440fd(0x15d)](_0x20c061[_0x2440fd(0x170)]-_0x27f188['absoluteX']+(_0x20c061[_0x2440fd(0x16b)]-_0x27f188['width'])/0x2,0x2)+Math[_0x2440fd(0x15d)](_0x20c061[_0x2440fd(0x192)]-_0x27f188['absoluteY']+(_0x20c061[_0x2440fd(0x17d)]-_0x27f188[_0x2440fd(0x17d)])/0x2,0x2));return{..._0x48f3a3,'length':_0x2ee17e};}))[_0x5169cd(0x162)]((_0x6fc8f5,_0x400494)=>_0x6fc8f5[_0x5169cd(0x1a4)]-_0x400494[_0x5169cd(0x1a4)]))[_0x5169cd(0x172)](_0x3badc6=>{const _0x31eb6c=_0x5169cd;_0x2cfe6f={};const _0x466574=_0x662d56['map'][_0x3badc6[_0x31eb6c(0x168)]],_0x372cf3=_0x662d56[_0x31eb6c(0x172)][_0x3badc6['to']];if(!_0x466574||!_0x372cf3){if(this[_0x31eb6c(0x19f)]={'code':ERRORS['NOT_FOUND_OBJECTS'],'link':_0x3badc6,'text':_0x31eb6c(0x15f)+_0x3badc6[_0x31eb6c(0x168)]+_0x3badc6[_0x31eb6c(0x19c)]+_0x3badc6['to']+']'},_0x1ee171)return void console[_0x31eb6c(0x19f)](this[_0x31eb6c(0x19f)]);throw this['error'];}{const _0x1eac93={'id':_0x3badc6[_0x31eb6c(0x168)]},_0x360a29={'id':_0x3badc6['to']},_0x1d2662=0x5,_0x2e977e={'x':Math[_0x31eb6c(0x176)](_0x466574[_0x31eb6c(0x170)]+_0x1d2662),'w':Math[_0x31eb6c(0x176)](_0x466574[_0x31eb6c(0x16b)]-0x2*_0x1d2662),'y':Math[_0x31eb6c(0x176)](_0x466574[_0x31eb6c(0x192)]+_0x1d2662),'h':Math[_0x31eb6c(0x176)](_0x466574['height']-0x2*_0x1d2662)},_0x83aebd={'x':Math['round'](_0x372cf3[_0x31eb6c(0x170)]+_0x1d2662),'w':Math[_0x31eb6c(0x176)](_0x372cf3['width']-0x2*_0x1d2662),'y':Math['round'](_0x372cf3[_0x31eb6c(0x192)]+_0x1d2662),'h':Math['round'](_0x372cf3[_0x31eb6c(0x17d)]-0x2*_0x1d2662)};if(_0x1eac93['y']=Math[_0x31eb6c(0x176)]((0.5*_0x2e977e['h']+_0x2e977e['y'])/this[_0x31eb6c(0x18c)]),_0x360a29['y']=Math['round']((0.5*_0x83aebd['h']+_0x83aebd['y'])/this['trackWidth']),_0x1eac93['x']=Math[_0x31eb6c(0x176)]((0.5*_0x2e977e['w']+_0x2e977e['x'])/this[_0x31eb6c(0x18c)]),_0x360a29['x']=Math[_0x31eb6c(0x176)]((0.5*_0x83aebd['w']+_0x83aebd['x'])/this[_0x31eb6c(0x18c)]),!((_0x29cdcb,_0x190c82)=>{const _0x5adacf=_0x31eb6c;if(!_0x3d8e32(_0x29cdcb['x'],_0x29cdcb['y'])||!_0x3d8e32(_0x190c82['x'],_0x190c82['y']))return;let _0x5debeb=[{'x':_0x29cdcb['x'],'y':_0x29cdcb['y']}];const _0x5e002c=[];for(const _0x54b909 in _0x662d56['map'])(_0x54b909[_0x5adacf(0x191)](_0x29cdcb['id'])||_0x54b909[_0x5adacf(0x191)](_0x190c82['id']))&&_0x5e002c['push'](_0x54b909);const _0x5d4a2e=(_0x1f436d,_0x7437b2)=>{const _0x3e94aa=_0x5adacf,_0x445a76=[];return _0x3d8e32(_0x1f436d+0x1,_0x7437b2)&&_0x32ace2(_0x1f436d+0x1,_0x7437b2)&&!_0x14ea89(_0x5e002c,_0x1f436d+0x1,_0x7437b2)&&_0x445a76['push']({'y':_0x7437b2,'x':_0x1f436d+0x1,'v':_0x28b419(_0x1f436d,_0x7437b2)+0x1}),_0x3d8e32(_0x1f436d-0x1,_0x7437b2)&&_0x32ace2(_0x1f436d-0x1,_0x7437b2)&&!_0x14ea89(_0x5e002c,_0x1f436d-0x1,_0x7437b2)&&_0x445a76[_0x3e94aa(0x19b)]({'y':_0x7437b2,'x':_0x1f436d-0x1,'v':_0x28b419(_0x1f436d,_0x7437b2)+0x1}),_0x3d8e32(_0x1f436d,_0x7437b2+0x1)&&_0x32ace2(_0x1f436d,_0x7437b2+0x1)&&!_0x14ea89(_0x5e002c,_0x1f436d,_0x7437b2+0x1)&&_0x445a76[_0x3e94aa(0x19b)]({'y':_0x7437b2+0x1,'x':_0x1f436d,'v':_0x28b419(_0x1f436d,_0x7437b2)+0x1}),_0x3d8e32(_0x1f436d,_0x7437b2-0x1)&&_0x32ace2(_0x1f436d,_0x7437b2-0x1)&&!_0x14ea89(_0x5e002c,_0x1f436d,_0x7437b2-0x1)&&_0x445a76[_0x3e94aa(0x19b)]({'y':_0x7437b2-0x1,'x':_0x1f436d,'v':_0x28b419(_0x1f436d,_0x7437b2)+0x1}),_0x445a76;};let _0x477d3f=!0x1,_0x38add3=[],_0x3318eb=0x0,_0x8db406=[];for(;_0x5debeb['length']&&!_0x477d3f;){const _0x390f40=[];for(let _0x2cd384=0x0;_0x2cd384<_0x5debeb[_0x5adacf(0x1a4)];_0x2cd384++){const _0x559dcb=_0x5debeb[_0x2cd384],_0x236970=_0x5d4a2e(_0x559dcb['x'],_0x559dcb['y']),_0x123186=Math[_0x5adacf(0x1af)](_0x190c82['x']-_0x559dcb['x']),_0x25ddef=Math[_0x5adacf(0x1af)](_0x190c82['y']-_0x559dcb['y']);for(let _0x2c63c6=0x0;_0x2c63c6<_0x236970['length'];_0x2c63c6++){const _0x7485e0=_0x236970[_0x2c63c6];if(_0x7485e0['x']===_0x190c82['x']&&_0x7485e0['y']===_0x190c82['y']){_0x477d3f=!0x0;break;}if(_0x16be14=_0x7485e0['x'],_0x147cc3=_0x7485e0['y'],_0x31081c[_0x147cc3+':'+_0x16be14])_0x5c70d4(_0x7485e0['x'],_0x7485e0['y'],_0x7485e0['v']+0x64),_0x38add3[_0x5adacf(0x19b)](_0x7485e0);else{if(!_0x28b419(_0x7485e0['x'],_0x7485e0['y'])){if(Math[_0x5adacf(0x1af)](_0x7485e0['x']-_0x190c82['x'])>_0x123186||Math['abs'](_0x7485e0['y']-_0x190c82['y'])>_0x25ddef){_0x5c70d4(_0x7485e0['x'],_0x7485e0['y'],_0x7485e0['v']+0x2),_0x8db406[_0x5adacf(0x19b)](_0x7485e0);continue;}_0x5c70d4(_0x7485e0['x'],_0x7485e0['y'],_0x7485e0['v']+0x1),_0x390f40[_0x5adacf(0x19b)]({'x':_0x7485e0['x'],'y':_0x7485e0['y']});}}}}_0x5debeb=_0x390f40,_0x5debeb[_0x5adacf(0x1a4)]||(_0x8db406[_0x5adacf(0x1a4)]?(_0x3318eb++,_0x3318eb<=0x64?_0x5debeb=_0x8db406:(_0x5debeb=[..._0x8db406,..._0x38add3],_0x38add3=[]),_0x8db406=[]):(_0x5debeb=_0x38add3,_0x38add3=[]));}var _0x16be14,_0x147cc3;return _0x477d3f;})(_0x1eac93,_0x360a29)){if(this[_0x31eb6c(0x19f)]={'code':ERRORS['RESTORE_PATH_FAIL'],'link':_0x3badc6,'text':_0x31eb6c(0x177)+_0x3badc6['from']+_0x3badc6[_0x31eb6c(0x19c)]+_0x3badc6['to']},_0x1ee171)return void console['error'](this['error']);throw this[_0x31eb6c(0x19f)];}{const _0x1b18eb=_0x9163a3(_0x1eac93,_0x360a29)[_0x31eb6c(0x172)](_0x2fb092=>{const _0x136529=_0x31eb6c;var _0x3b7c27,_0x1b08c0;return _0x3b7c27=_0x2fb092['x'],_0x1b08c0=_0x2fb092['y'],_0x31081c[_0x1b08c0+':'+_0x3b7c27]=!0x0,_0x2fb092['x']=Math[_0x136529(0x176)](_0x2fb092['x']*this['trackWidth']+0.5*this['trackWidth']),_0x2fb092['y']=Math[_0x136529(0x176)](_0x2fb092['y']*this['trackWidth']+0.5*this['trackWidth']),this[_0x136529(0x17a)](_0x2fb092['x'],_0x2fb092['y'],_0x2fb092['x']+0x1,_0x2fb092['y']+0x1),_0x2fb092;}),_0x4b33b1=(_0xe97833,_0x3f9ccf,_0x1f6cc3)=>{const _0x22972b=_0x31eb6c;if(_0x3f9ccf['y']===_0x1f6cc3['y']){if(_0x3f9ccf['x']<_0xe97833[_0x22972b(0x170)])return _0x3f9ccf['x']=_0xe97833[_0x22972b(0x170)]-0x5,null;if(_0x3f9ccf['x']>_0xe97833[_0x22972b(0x170)]+_0xe97833[_0x22972b(0x16b)])return _0x3f9ccf['x']=_0xe97833[_0x22972b(0x170)]+_0xe97833[_0x22972b(0x16b)]+0x5,null;if(_0x3f9ccf['y']<_0xe97833[_0x22972b(0x192)])return{'x':_0x3f9ccf['x'],'y':_0xe97833['absoluteY']-0x5};if(_0x3f9ccf['y']>_0xe97833[_0x22972b(0x192)]+_0xe97833[_0x22972b(0x17d)])return{'x':_0x3f9ccf['x'],'y':_0xe97833[_0x22972b(0x192)]+_0xe97833[_0x22972b(0x17d)]+0x5};}else{if(_0x3f9ccf['y']<_0xe97833[_0x22972b(0x192)])return _0x3f9ccf['y']=_0xe97833[_0x22972b(0x192)]-0x5,null;if(_0x3f9ccf['y']>_0xe97833['absoluteY']+_0xe97833[_0x22972b(0x17d)])return _0x3f9ccf['y']=_0xe97833[_0x22972b(0x192)]+_0xe97833[_0x22972b(0x17d)]+0x5,null;if(_0x3f9ccf['x']<_0xe97833[_0x22972b(0x170)])return{'x':_0xe97833['absoluteX']-0x5,'y':_0x3f9ccf['y']};if(_0x3f9ccf['x']>_0xe97833[_0x22972b(0x170)]+_0xe97833['width'])return{'x':_0xe97833[_0x22972b(0x170)]+_0xe97833[_0x22972b(0x16b)]+0x5,'y':_0x3f9ccf['y']};}return null;};if(_0x1b18eb[_0x31eb6c(0x1a4)]>0x1){const _0x25c4b5=_0x4b33b1(_0x372cf3,_0x1b18eb[0x0],_0x1b18eb[0x1]),_0x3a9137=_0x4b33b1(_0x466574,_0x1b18eb[_0x1b18eb['length']-0x1],_0x1b18eb[_0x1b18eb[_0x31eb6c(0x1a4)]-0x2]);_0x25c4b5&&_0x1b18eb[_0x31eb6c(0x19a)](_0x25c4b5),_0x3a9137&&_0x1b18eb[_0x31eb6c(0x19b)](_0x3a9137);}_0x41401a['push']({'id':Math[_0x31eb6c(0x176)](0x186a0*Math[_0x31eb6c(0x167)]())+':'+_0x3badc6[_0x31eb6c(0x168)]+_0x3badc6[_0x31eb6c(0x19c)]+_0x3badc6['to'],'link':_0x3badc6,'path':_0x3cd78d(_0x1b18eb)});}}}),[_0x41401a,_0x5403fb];},'splitNodesByTag'(_0x353e5e){const _0x12d965=_0x4fdf07,_0x368530={},_0x3b9446={};return Object[_0x12d965(0x195)](_0x353e5e)[_0x12d965(0x181)](([_0x5755c0,_0x157247])=>{const _0x219d8f=_0x12d965,_0x1db552=[],_0x5a6772={};_0x5755c0[_0x219d8f(0x1a5)]('.')[_0x219d8f(0x181)](_0x6d042d=>{const _0x2190ed=_0x219d8f;_0x1db552[_0x2190ed(0x19b)](_0x6d042d);const _0x3e4dcd=_0x1db552[_0x2190ed(0x182)]('.'),_0x2e610e=_0x1db552[_0x2190ed(0x1a0)](0x0,_0x1db552[_0x2190ed(0x1a4)]-0x1)[_0x2190ed(0x182)]('.');_0x353e5e[_0x3e4dcd]&&(!_0x353e5e[_0x3e4dcd][_0x2190ed(0x1a3)]&&_0x3b9446[_0x2e610e]&&(_0x353e5e[_0x3e4dcd][_0x2190ed(0x1a3)]=_0x3b9446[_0x2e610e]),_0x5a6772[_0x3e4dcd]=_0x353e5e[_0x3e4dcd],_0x353e5e[_0x3e4dcd][_0x2190ed(0x1a3)]?(_0x3b9446[_0x3e4dcd]=_0x353e5e[_0x3e4dcd]['tag'],_0x368530[_0x157247['tag']]={..._0x368530[_0x157247[_0x2190ed(0x1a3)]],..._0x5a6772}):_0x368530['default']={..._0x368530[_0x2190ed(0x186)],..._0x5a6772});});}),_0x368530;},'buildGraph'(_0x359ddf,_0x1a671e,_0x3fb552,_0x15be3a=0x0,_0x11d597=0x0){const _0x2134b0=_0x4fdf07,_0x130792={'subitems':{},'symbol':_0x2134b0(0x179)},_0x46a934={};for(const _0x3c97a1 in _0x359ddf){let _0x4ec0a7=_0x130792;const _0x1ee893=[];_0x3c97a1[_0x2134b0(0x1a5)]('.')[_0x2134b0(0x172)](_0x24136c=>{const _0x61bded=_0x2134b0;_0x1ee893[_0x61bded(0x19b)](_0x24136c);const _0x31ff97=_0x1ee893[_0x61bded(0x182)]('.');_0x4ec0a7[_0x61bded(0x1ad)][_0x24136c]||(_0x4ec0a7['subitems'][_0x24136c]={'id':_0x31ff97,'hideTitle':(_0x359ddf[_0x31ff97]||{})[_0x61bded(0x1a8)],'background':(_0x359ddf[_0x31ff97]||{})[_0x61bded(0x175)],'opacity':(_0x359ddf[_0x31ff97]||{})[_0x61bded(0x173)],'title':(_0x359ddf[_0x31ff97]||{})['title']||_0x31ff97,'subitems':{},'symbol':(_0x359ddf[_0x31ff97]||{})['symbol']||_0x61bded(0x16f)}),_0x4ec0a7=_0x4ec0a7[_0x61bded(0x1ad)][_0x24136c];});}const _0x2c8972=(_0x14415b,_0x1f201e)=>{const _0x51bb7f=_0x2134b0,_0x1d41ba=[];for(const _0x2c4cb8 in _0x14415b[_0x51bb7f(0x1ad)]){const _0x3962b1=_0x14415b['subitems'][_0x2c4cb8];_0x2c8972(_0x3962b1),_0x1d41ba['push'](_0x3962b1);}if(_0x1d41ba['length']){const _0x54c833={};let _0x473cd4={'count':-0x1,'id':null};_0x1d41ba[_0x51bb7f(0x172)](_0x43b423=>{const _0x185652=_0x51bb7f;let _0x355527=0x0;const _0x535fbd=_0x1a671e['filter'](_0x3bd5a8=>(_0x3bd5a8[_0x185652(0x168)]===_0x43b423['id']||_0x3bd5a8['to']===_0x43b423['id'])&&(_0x355527=Math['max'](_0x355527,(_0x3bd5a8[_0x185652(0x194)]||'')[_0x185652(0x1a4)]),!0x0)),_0x172909=Math[_0x185652(0x1b0)](Math['round'](_0x535fbd[_0x185652(0x1a4)]*_0x31fa3c/0x4),this[_0x185652(0x17e)],0xa*_0x355527),_0x21bf38={'node':_0x43b423,'links':_0x535fbd,'distance':_0x172909,'w':_0x43b423[_0x185652(0x18d)]['width']+_0x172909,'h':_0x43b423[_0x185652(0x18d)][_0x185652(0x17d)]+_0x172909};_0x21bf38[_0x185652(0x1a2)][_0x185652(0x1a4)]>_0x473cd4['count']&&(_0x473cd4[_0x185652(0x18b)]=_0x21bf38[_0x185652(0x1a2)][_0x185652(0x1a4)],_0x473cd4['id']=_0x43b423['id']),_0x54c833[_0x43b423['id']]=_0x21bf38;});const _0x6acc5=_0x4da332=>{const _0xb99871=_0x51bb7f,_0x52036a=_0x54c833[_0x4da332];return _0x52036a&&(_0x2e4183[_0xb99871(0x19b)](_0x54c833[_0x4da332]),delete _0x54c833[_0x4da332],_0x52036a[_0xb99871(0x1a2)][_0xb99871(0x172)](_0x4d1c3f=>_0x6acc5(_0x4d1c3f[_0xb99871(0x168)])||_0x6acc5(_0x4d1c3f['to']))),!0x1;},_0x2e4183=[];for(let _0x17ad00=Object['keys'](_0x54c833);_0x17ad00[_0x51bb7f(0x1a4)];_0x17ad00=Object[_0x51bb7f(0x180)](_0x54c833))_0x473cd4['id']?(_0x6acc5(_0x473cd4['id']),_0x473cd4['id']=null):_0x6acc5(_0x17ad00[0x0]);const _0x42c0ab=(_0x14415b[_0x51bb7f(0x193)]?.[_0x51bb7f(0x171)]('$')?void 0x0:this[_0x51bb7f(0x178)][_0x14415b['symbol']])||this[_0x51bb7f(0x178)][_0x51bb7f(0x179)],{w:_0x339c73,h:_0x3117f6}=potpack(_0x2e4183,_0x1f201e);_0x14415b[_0x51bb7f(0x18d)]={'width':Math['max'](_0x339c73,_0x42c0ab[_0x51bb7f(0x16b)]),'height':_0x3117f6+_0x42c0ab[_0x51bb7f(0x17d)]},_0x14415b[_0x51bb7f(0x1b6)]=_0x2e4183[_0x51bb7f(0x172)](_0x464eb0=>(_0x464eb0['x']+=0.5*_0x464eb0['distance'],_0x464eb0['y']+=0.5*_0x464eb0[_0x51bb7f(0x17e)]+_0x42c0ab[_0x51bb7f(0x17d)],_0x464eb0[_0x51bb7f(0x16b)]=_0x464eb0[_0x51bb7f(0x197)][_0x51bb7f(0x18d)][_0x51bb7f(0x16b)],_0x464eb0[_0x51bb7f(0x17d)]=_0x464eb0['node'][_0x51bb7f(0x18d)][_0x51bb7f(0x17d)],_0x46a934[_0x464eb0[_0x51bb7f(0x197)]['id']]=_0x464eb0)),_0x42c0ab?.[_0x51bb7f(0x16b)]>0x0&&(_0x14415b[_0x51bb7f(0x17f)]=_0x42c0ab);}else _0x14415b[_0x51bb7f(0x18d)]=this['symbols'][_0x14415b['symbol']],_0x14415b[_0x51bb7f(0x18d)]||(_0x14415b['box']={'x':0x0,'y':0x0,'width':0x20,'height':0x20},this['error']={'code':ERRORS[_0x51bb7f(0x1ab)],'text':_0x51bb7f(0x15c)+_0x14415b[_0x51bb7f(0x193)]+'\x22'},console[_0x51bb7f(0x19f)](this[_0x51bb7f(0x19f)])),delete _0x14415b[_0x51bb7f(0x1ad)];};_0x2c8972(_0x130792,_0x3fb552);const _0x1f25e2=(_0x3c8491,_0x581079,_0x551584)=>{const _0x343092=_0x2134b0;for(const _0x388765 in _0x3c8491){const _0x543a25=_0x3c8491[_0x388765];if(_0x543a25['x']&&_0x543a25['y']||(_0x543a25['x']=0x0,_0x543a25['y']=0x0,_0x543a25[_0x343092(0x197)]={}),_0x543a25[_0x343092(0x170)]=_0x543a25['x']+_0x581079,_0x543a25['absoluteY']=_0x543a25['y']+_0x551584,this[_0x343092(0x17a)](_0x543a25[_0x343092(0x170)],_0x543a25['absoluteY'],_0x543a25[_0x343092(0x170)]+_0x543a25['width'],_0x543a25[_0x343092(0x192)]+_0x543a25[_0x343092(0x17d)]),_0x543a25[_0x343092(0x187)]={'x':_0x543a25[_0x343092(0x170)]/this[_0x343092(0x18c)],'y':_0x543a25['absoluteY']/this[_0x343092(0x18c)]},_0x543a25[_0x343092(0x187)]['dx']=Math[_0x343092(0x176)](_0x543a25[_0x343092(0x187)]['x']+_0x543a25[_0x343092(0x16b)]/this[_0x343092(0x18c)]),_0x543a25['trackRect']['dy']=Math[_0x343092(0x176)](_0x543a25['trackRect']['y']+_0x543a25[_0x343092(0x17d)]/this[_0x343092(0x18c)]),_0x543a25[_0x343092(0x187)]['x']=Math[_0x343092(0x176)](_0x543a25[_0x343092(0x187)]['x']),_0x543a25['trackRect']['y']=Math[_0x343092(0x176)](_0x543a25[_0x343092(0x187)]['y']),_0x543a25['node']?.[_0x343092(0x1b6)]&&_0x1f25e2(_0x543a25[_0x343092(0x197)][_0x343092(0x1b6)],_0x543a25['x']+_0x581079,_0x543a25['y']+_0x551584),_0x543a25[_0x343092(0x197)]?.[_0x343092(0x17f)]){const _0x35a118=_0x543a25['node']['symbolBox'];_0x543a25['symbolTrackRect']={'x':_0x543a25[_0x343092(0x170)]/this['trackWidth'],'y':_0x543a25['absoluteY']/this[_0x343092(0x18c)]},_0x543a25['symbolTrackRect']['dx']=Math[_0x343092(0x176)](_0x543a25[_0x343092(0x169)]['x']+_0x35a118[_0x343092(0x16b)]/this[_0x343092(0x18c)]),_0x543a25[_0x343092(0x169)]['dy']=Math[_0x343092(0x176)](_0x543a25[_0x343092(0x169)]['y']+_0x35a118[_0x343092(0x17d)]/this[_0x343092(0x18c)]),_0x543a25[_0x343092(0x169)]['x']=Math['round'](_0x543a25[_0x343092(0x169)]['x']),_0x543a25[_0x343092(0x169)]['y']=Math[_0x343092(0x176)](_0x543a25[_0x343092(0x169)]['y']);}}};return _0x1f25e2(_0x130792[_0x2134b0(0x1b6)],Math[_0x2134b0(0x176)](0.5*this[_0x2134b0(0x17e)]+_0x15be3a),Math[_0x2134b0(0x176)](0.5*this[_0x2134b0(0x17e)]+_0x11d597)),_0x1f25e2([_0x130792[_0x2134b0(0x18d)]],Math[_0x2134b0(0x176)](0.5*this[_0x2134b0(0x17e)]+_0x15be3a),Math[_0x2134b0(0x176)](0.5*this[_0x2134b0(0x17e)]+_0x11d597)),{'layers':_0x130792,'map':_0x46a934};}};}!(function(){const _0x5815dd=_0x27d38a,_0x2b894f={'ERRORS':ERRORS,'make':(_0x349252,_0x4e2de9,_0x447c8e,_0x33c719,_0x45da08,_0x2503c4,_0x148506,_0x54d841=null,_0x5d6723)=>new Promise((_0x37897d,_0x59a0af)=>{const _0x9c0210=_0x127c,_0x4478ed=new core(_0x33c719,_0x45da08,_0x2503c4,_0x5d6723);try{if(!Object['keys'](_0x349252)[_0x9c0210(0x1a4)]){const _0x357360=_0x4478ed[_0x9c0210(0x188)](_0x4e2de9,_0x447c8e,_0x148506);[_0x357360['tracks'],_0x357360[_0x9c0210(0x15b)]]=_0x4478ed[_0x9c0210(0x18f)](_0x357360,_0x447c8e),_0x357360[_0x9c0210(0x1b4)]=_0x4478ed[_0x9c0210(0x1b4)],_0x54d841&&(_0x357360[_0x9c0210(0x1b4)]['dy']=Math[_0x9c0210(0x1b0)](_0x54d841,_0x357360[_0x9c0210(0x1b4)]['dy'])),_0x37897d(_0x357360);}const _0x1fd7a3=_0x4478ed[_0x9c0210(0x15a)](_0x4e2de9),_0x1aefc7={};let _0x293c09=0x0,_0x338ee5=0x0,_0x9aa553=0x0,_0x578de0=!0x1;const _0x1a0d32=(_0x3873ea,_0x19765c)=>{const _0x5793a6=_0x9c0210;for(let _0x16f325 in _0x3873ea)Object[_0x5793a6(0x195)](_0x3873ea[_0x16f325])[_0x5793a6(0x181)](([_0x492ca8,_0x37c0ff])=>{const _0xc287f6=_0x5793a6;if(_0xc287f6(0x1b3)===_0x492ca8){const _0x10aaef=_0x4478ed[_0xc287f6(0x1b4)]['dx'];_0x1a0d32(_0x37c0ff,_0x492ca8),_0x293c09=0x0,_0x9aa553<_0x4478ed[_0xc287f6(0x1b4)]['dx']&&(_0x9aa553=_0x4478ed[_0xc287f6(0x1b4)]['dx']),'row'!==_0x19765c&&(_0x4478ed[_0xc287f6(0x1b4)]['dx']=_0x10aaef,_0x338ee5=_0x4478ed[_0xc287f6(0x1b4)]['dy']);}else{if(Array[_0xc287f6(0x16a)](_0x37c0ff))_0x338ee5=0x0,_0x293c09=0x0,_0x9aa553<_0x4478ed[_0xc287f6(0x1b4)]['dx']&&(_0x9aa553=_0x4478ed['valueBox']['dx']),_0xc287f6(0x1b3)===_0x492ca8&&(_0x4478ed[_0xc287f6(0x1b4)]['dx']=0x0,_0x338ee5=_0x4478ed[_0xc287f6(0x1b4)]['dy']),_0x1a0d32(_0x37c0ff,_0x492ca8);else{const _0x32e023=_0x37c0ff;_0xc287f6(0x186)===_0x32e023&&(_0x578de0=!0x0);const _0x2828fc=_0x1fd7a3[_0x32e023];_0x2828fc&&(_0x293c09=_0x4478ed[_0xc287f6(0x1b4)]['dx'],_0x1aefc7[_0x32e023]=_0x4478ed[_0xc287f6(0x188)](_0x2828fc,_0x447c8e,_0x148506,_0x293c09,_0x338ee5),_0x1aefc7[_0x32e023][_0xc287f6(0x1b4)]=_0x4478ed['valueBox']);}}});};if(_0x1a0d32(_0x349252,_0x9c0210(0x1ac)),!_0x578de0){const _0x5d851a=_0x9c0210(0x186),_0x1cd646=_0x1fd7a3[_0x5d851a];if(_0x1cd646){const _0x27b256=_0x4478ed[_0x9c0210(0x1b4)]['dy'];_0x1aefc7[_0x5d851a]=_0x4478ed['buildGraph'](_0x1cd646,_0x447c8e,_0x148506,_0x293c09,_0x338ee5),_0x1aefc7[_0x5d851a]['valueBox']=_0x4478ed[_0x9c0210(0x1b4)],_0x1aefc7[_0x5d851a][_0x9c0210(0x1b4)]['dy']=_0x27b256;}}const _0x11df30=Object[_0x9c0210(0x195)](_0x1aefc7)['reduce']((_0x14c4b8,[_0x26dd6f,{layers:_0x469ca3,map:_0x4ff252}])=>({..._0x14c4b8,'layers':{'symbol':_0x9c0210(0x179),'box':{'width':_0x14c4b8[_0x9c0210(0x161)][_0x9c0210(0x18d)][_0x9c0210(0x16b)]+_0x469ca3[_0x9c0210(0x18d)][_0x9c0210(0x16b)],'height':_0x14c4b8['layers']['box'][_0x9c0210(0x17d)]+_0x469ca3['box']['height']},'boxes':[..._0x14c4b8[_0x9c0210(0x161)][_0x9c0210(0x1b6)],..._0x469ca3[_0x9c0210(0x1b6)],{..._0x469ca3['box'],'node':{'id':_0x5d6723?_0x26dd6f:''}}],'subitems':{..._0x14c4b8[_0x9c0210(0x161)][_0x9c0210(0x1ad)],..._0x469ca3[_0x9c0210(0x1ad)]}},'map':{..._0x14c4b8[_0x9c0210(0x172)],..._0x4ff252}}),{'layers':{'box':{'width':0x0,'height':0x0},'boxes':[],'subitems':{},'symbol':_0x9c0210(0x179)},'map':{}});[_0x11df30[_0x9c0210(0x196)],_0x11df30[_0x9c0210(0x15b)]]=_0x4478ed[_0x9c0210(0x18f)](_0x11df30,_0x447c8e),_0x4478ed[_0x9c0210(0x1b4)]['dx']<_0x9aa553&&(_0x4478ed[_0x9c0210(0x1b4)]['dx']=_0x9aa553),_0x11df30[_0x9c0210(0x1b4)]=_0x4478ed[_0x9c0210(0x1b4)],_0x54d841&&(_0x11df30['valueBox']['dy']=Math[_0x9c0210(0x1b0)](_0x54d841,_0x11df30[_0x9c0210(0x1b4)]['dy'])),_0x37897d(_0x11df30);}catch(_0x5049e9){_0x59a0af(_0x5049e9);}})};this[_0x5815dd(0x18a)]?window[_0x5815dd(0x17b)]=_0x2b894f:self['addEventListener'](_0x5815dd(0x1a1),_0x5d1b4b=>{const _0x1b1c08=_0x5815dd,_0x5d24c2=_0x5d1b4b[_0x1b1c08(0x1b2)][_0x1b1c08(0x174)],_0x1a7dd6=_0x5d1b4b['data'][_0x1b1c08(0x198)];_0x2b894f[_0x1b1c08(0x19e)](_0x5d24c2[_0x1b1c08(0x1a9)],_0x5d24c2[_0x1b1c08(0x1a7)],_0x5d24c2[_0x1b1c08(0x1a2)],_0x5d24c2[_0x1b1c08(0x18c)],_0x5d24c2[_0x1b1c08(0x17e)],_0x5d24c2[_0x1b1c08(0x178)],_0x5d24c2[_0x1b1c08(0x159)],_0x5d24c2['isDebug'])['then'](_0x14cc6b=>{const _0x564dbf=_0x1b1c08;self[_0x564dbf(0x199)]({'result':'OK','queryID':_0x1a7dd6,'graph':_0x14cc6b});})[_0x1b1c08(0x1aa)](_0x211df8=>{const _0x5c47ec=_0x1b1c08;self[_0x5c47ec(0x199)]({'result':_0x5c47ec(0x189),'queryID':_0x1a7dd6,'error':_0x211df8});});},!0x1);}()); diff --git a/src/backend/storage/manager.mjs b/src/backend/storage/manager.mjs index 177d5b00..0f7cb689 100644 --- a/src/backend/storage/manager.mjs +++ b/src/backend/storage/manager.mjs @@ -84,9 +84,9 @@ export default { }, applyManifest: async function(app, storage) { app.storage = storage; // Инициализируем данные хранилища + this.resetCustomFunctions(storage.manifest); validators(app); // Выполняет валидаторы Object.freeze(app.storage); - this.resetCustomFunctions(storage.manifest); this.onApplyManifest.map((listener) => listener(app)); }, cleanStorage(app) { diff --git a/src/frontend/components/Docs/DocTable.vue b/src/frontend/components/Docs/DocTable.vue index afd12b39..20df5467 100644 --- a/src/frontend/components/Docs/DocTable.vue +++ b/src/frontend/components/Docs/DocTable.vue @@ -94,7 +94,7 @@ footerProps() { let lengthOtions = Array.from( new Set( - [5, 10, 15, Math.min(this.source.dataset?.length, 20)] + [5, 10, 15, 20, this.source.dataset?.length] ) ); const itemsPerPageOptions = lengthOtions diff --git a/src/frontend/router/routes.js b/src/frontend/router/routes.js index 6ab7c4a5..efcebb59 100644 --- a/src/frontend/router/routes.js +++ b/src/frontend/router/routes.js @@ -94,7 +94,7 @@ const routes = [ props: middleware }, { - name: 'problems', + name: 'problems-subj', path: '/problems/:subject', component: Problems, props: middleware diff --git a/src/frontend/storage/gitlab.js b/src/frontend/storage/gitlab.js index 742efb81..62afa7fa 100644 --- a/src/frontend/storage/gitlab.js +++ b/src/frontend/storage/gitlab.js @@ -325,7 +325,8 @@ export default { .then((response) => { context.commit('setAccessToken', response.data.access_token); context.commit('setRefreshToken', response.data.refresh_token); - setTimeout(() => context.dispatch('refreshAccessToken'), (response.data.expires_in - 10) * 1000); + // Если expires_in нет, считаем, что токен вечный + response.data.expires_in && setTimeout(() => context.dispatch('refreshAccessToken'), (response.data.expires_in - 10) * 1000); if (OAuthCode) context.dispatch('reloadAll'); }).catch((e) => { context.commit('appendProblems', [{ diff --git a/src/global/manifest/tools/uri.mjs b/src/global/manifest/tools/uri.mjs index 6169b780..5127b239 100644 --- a/src/global/manifest/tools/uri.mjs +++ b/src/global/manifest/tools/uri.mjs @@ -117,7 +117,7 @@ export default function(config) { let slices = result.url.toString().split('/'); const path = (new URL(uri, 'path:/' + slices[slices.length - 2].split('%2F').join('/'))).toString(); slices[slices.length - 2] = (path.split('path:/')[1] || '').split('/').join('%2F'); - result.url = new URL(slices.join('/') + (params ? '?' + params : '')); + result.url = new URL(slices.join('/')); } else if (result.type === 'bitbucket') { const [url, params] = result.url.toString().split('?'); const path = (new URL(uri, url)).toString();