Browse Source

Added DezuKVM USB-KVM App

Toby Chui 6 days ago
parent
commit
9fffba306f
100 changed files with 13151 additions and 0 deletions
  1. BIN
      3D models/usb-kvm case/OldVersions/case_flagless.0005.ipt
  2. BIN
      3D models/usb-kvm case/case_flagless.ipt
  3. 2133 0
      3D models/usb-kvm case/case_flagless.stp
  4. BIN
      3D models/usb-kvm case/test_fit_flagless.iam
  5. 27 0
      designs/logo_bw_pro.ai
  6. 29 0
      designs/logo_bw_pro.svg
  7. 48 0
      usbkvm-app/README.md
  8. 18 0
      usbkvm-app/cert.pem
  9. 3 0
      usbkvm-app/go.mod
  10. BIN
      usbkvm-app/img/README/image-20251004211247522.png
  11. BIN
      usbkvm-app/img/README/image-20251004211315151.png
  12. BIN
      usbkvm-app/img/README/image-20251004211519671.png
  13. 27 0
      usbkvm-app/key.pem
  14. 126 0
      usbkvm-app/main.go
  15. 29 0
      usbkvm-app/www/img/logo.svg
  16. 143 0
      usbkvm-app/www/index.html
  17. 753 0
      usbkvm-app/www/local-kvm.js
  18. BIN
      usbkvm-app/www/tocas/NotoSansTC-VariableFont_wght.ttf
  19. 4 0
      usbkvm-app/www/tocas/flags/1x1/ad.svg
  20. 6 0
      usbkvm-app/www/tocas/flags/1x1/ae.svg
  21. 68 0
      usbkvm-app/www/tocas/flags/1x1/af.svg
  22. 14 0
      usbkvm-app/www/tocas/flags/1x1/ag.svg
  23. 767 0
      usbkvm-app/www/tocas/flags/1x1/ai.svg
  24. 2 0
      usbkvm-app/www/tocas/flags/1x1/al.svg
  25. 5 0
      usbkvm-app/www/tocas/flags/1x1/am.svg
  26. 13 0
      usbkvm-app/www/tocas/flags/1x1/ao.svg
  27. 8 0
      usbkvm-app/www/tocas/flags/1x1/aq.svg
  28. 31 0
      usbkvm-app/www/tocas/flags/1x1/ar.svg
  29. 33 0
      usbkvm-app/www/tocas/flags/1x1/as.svg
  30. 6 0
      usbkvm-app/www/tocas/flags/1x1/at.svg
  31. 9 0
      usbkvm-app/www/tocas/flags/1x1/au.svg
  32. 186 0
      usbkvm-app/www/tocas/flags/1x1/aw.svg
  33. 18 0
      usbkvm-app/www/tocas/flags/1x1/ax.svg
  34. 8 0
      usbkvm-app/www/tocas/flags/1x1/az.svg
  35. 12 0
      usbkvm-app/www/tocas/flags/1x1/ba.svg
  36. 6 0
      usbkvm-app/www/tocas/flags/1x1/bb.svg
  37. 4 0
      usbkvm-app/www/tocas/flags/1x1/bd.svg
  38. 7 0
      usbkvm-app/www/tocas/flags/1x1/be.svg
  39. 7 0
      usbkvm-app/www/tocas/flags/1x1/bf.svg
  40. 7 0
      usbkvm-app/www/tocas/flags/1x1/bg.svg
  41. 11 0
      usbkvm-app/www/tocas/flags/1x1/bh.svg
  42. 15 0
      usbkvm-app/www/tocas/flags/1x1/bi.svg
  43. 14 0
      usbkvm-app/www/tocas/flags/1x1/bj.svg
  44. 7 0
      usbkvm-app/www/tocas/flags/1x1/bl.svg
  45. 88 0
      usbkvm-app/www/tocas/flags/1x1/bm.svg
  46. 20 0
      usbkvm-app/www/tocas/flags/1x1/bn.svg
  47. 354 0
      usbkvm-app/www/tocas/flags/1x1/bo.svg
  48. 5 0
      usbkvm-app/www/tocas/flags/1x1/bq.svg
  49. 9 0
      usbkvm-app/www/tocas/flags/1x1/br.svg
  50. 13 0
      usbkvm-app/www/tocas/flags/1x1/bs.svg
  51. 38 0
      usbkvm-app/www/tocas/flags/1x1/bt.svg
  52. 13 0
      usbkvm-app/www/tocas/flags/1x1/bv.svg
  53. 7 0
      usbkvm-app/www/tocas/flags/1x1/bw.svg
  54. 59 0
      usbkvm-app/www/tocas/flags/1x1/by.svg
  55. 19 0
      usbkvm-app/www/tocas/flags/1x1/bz.svg
  56. 4 0
      usbkvm-app/www/tocas/flags/1x1/ca.svg
  57. 10 0
      usbkvm-app/www/tocas/flags/1x1/cc.svg
  58. 12 0
      usbkvm-app/www/tocas/flags/1x1/cd.svg
  59. 15 0
      usbkvm-app/www/tocas/flags/1x1/cf.svg
  60. 12 0
      usbkvm-app/www/tocas/flags/1x1/cg.svg
  61. 9 0
      usbkvm-app/www/tocas/flags/1x1/ch.svg
  62. 7 0
      usbkvm-app/www/tocas/flags/1x1/ci.svg
  63. 9 0
      usbkvm-app/www/tocas/flags/1x1/ck.svg
  64. 13 0
      usbkvm-app/www/tocas/flags/1x1/cl.svg
  65. 15 0
      usbkvm-app/www/tocas/flags/1x1/cm.svg
  66. 11 0
      usbkvm-app/www/tocas/flags/1x1/cn.svg
  67. 7 0
      usbkvm-app/www/tocas/flags/1x1/co.svg
  68. 7 0
      usbkvm-app/www/tocas/flags/1x1/cr.svg
  69. 13 0
      usbkvm-app/www/tocas/flags/1x1/cu.svg
  70. 13 0
      usbkvm-app/www/tocas/flags/1x1/cv.svg
  71. 14 0
      usbkvm-app/www/tocas/flags/1x1/cw.svg
  72. 15 0
      usbkvm-app/www/tocas/flags/1x1/cx.svg
  73. 2 0
      usbkvm-app/www/tocas/flags/1x1/cy.svg
  74. 12 0
      usbkvm-app/www/tocas/flags/1x1/cz.svg
  75. 5 0
      usbkvm-app/www/tocas/flags/1x1/de.svg
  76. 13 0
      usbkvm-app/www/tocas/flags/1x1/dj.svg
  77. 5 0
      usbkvm-app/www/tocas/flags/1x1/dk.svg
  78. 152 0
      usbkvm-app/www/tocas/flags/1x1/dm.svg
  79. 6739 0
      usbkvm-app/www/tocas/flags/1x1/do.svg
  80. 5 0
      usbkvm-app/www/tocas/flags/1x1/dz.svg
  81. 137 0
      usbkvm-app/www/tocas/flags/1x1/ec.svg
  82. 7 0
      usbkvm-app/www/tocas/flags/1x1/ee.svg
  83. 23 0
      usbkvm-app/www/tocas/flags/1x1/eg.svg
  84. 15 0
      usbkvm-app/www/tocas/flags/1x1/eh.svg
  85. 10 0
      usbkvm-app/www/tocas/flags/1x1/er.svg
  86. 4 0
      usbkvm-app/www/tocas/flags/1x1/es-ct.svg
  87. 338 0
      usbkvm-app/www/tocas/flags/1x1/es.svg
  88. 14 0
      usbkvm-app/www/tocas/flags/1x1/et.svg
  89. 28 0
      usbkvm-app/www/tocas/flags/1x1/eu.svg
  90. 5 0
      usbkvm-app/www/tocas/flags/1x1/fi.svg
  91. 13 0
      usbkvm-app/www/tocas/flags/1x1/fj.svg
  92. 31 0
      usbkvm-app/www/tocas/flags/1x1/fk.svg
  93. 11 0
      usbkvm-app/www/tocas/flags/1x1/fm.svg
  94. 12 0
      usbkvm-app/www/tocas/flags/1x1/fo.svg
  95. 7 0
      usbkvm-app/www/tocas/flags/1x1/fr.svg
  96. 7 0
      usbkvm-app/www/tocas/flags/1x1/ga.svg
  97. 5 0
      usbkvm-app/www/tocas/flags/1x1/gb-eng.svg
  98. 128 0
      usbkvm-app/www/tocas/flags/1x1/gb-nir.svg
  99. 4 0
      usbkvm-app/www/tocas/flags/1x1/gb-sct.svg
  100. 4 0
      usbkvm-app/www/tocas/flags/1x1/gb-wls.svg

BIN
3D models/usb-kvm case/OldVersions/case_flagless.0005.ipt


BIN
3D models/usb-kvm case/case_flagless.ipt


+ 2133 - 0
3D models/usb-kvm case/case_flagless.stp

@@ -0,0 +1,2133 @@
+ISO-10303-21;
+HEADER;
+/* Generated by software containing ST-Developer
+ * from STEP Tools, Inc. (www.steptools.com) 
+ */
+
+FILE_DESCRIPTION(
+/* description */ ('',
+'CAx-IF Rec.Pracs.---Representation and Presentation of Product Manufa
+cturing Information (PMI)---4.0---2014-10-13'),
+/* implementation_level */ '2;1');
+
+FILE_NAME(
+/* name */ 
+'D:\\Invention\\RedesKVM\\RemdesKVM\\3D models\\usb-kvm case\\case_fla
+gless.stp',
+/* time_stamp */ '2025-10-04T14:05:00+08:00',
+/* author */ ('Toby'),
+/* organization */ (''),
+/* preprocessor_version */ 'ST-DEVELOPER v18.1',
+/* originating_system */ 'Autodesk Inventor 2021',
+/* authorisation */ '');
+
+FILE_SCHEMA (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF { 1 0 10303 442 1 1 4 }'));
+ENDSEC;
+
+DATA;
+#10=MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP('Isometric','',#24,#25);
+#11=MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP('Front','',#26,#25);
+#12=MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP('Top','',#27,#25);
+#13=MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP('Right','',#28,#25);
+#14=MAPPED_ITEM('',#19,#1236);
+#15=MAPPED_ITEM('',#20,#1237);
+#16=MAPPED_ITEM('',#21,#1238);
+#17=MAPPED_ITEM('',#22,#1239);
+#18=MAPPED_ITEM('',#23,#1240);
+#19=REPRESENTATION_MAP(#1236,#51);
+#20=REPRESENTATION_MAP(#1237,#2007);
+#21=REPRESENTATION_MAP(#1238,#51);
+#22=REPRESENTATION_MAP(#1239,#51);
+#23=REPRESENTATION_MAP(#1240,#51);
+#24=DRAUGHTING_MODEL('Isometric',(#14,#30),#1999);
+#25=DRAUGHTING_MODEL('',(#15,#1237),#1999);
+#26=DRAUGHTING_MODEL('Front',(#16,#31),#1999);
+#27=DRAUGHTING_MODEL('Top',(#17,#32),#1999);
+#28=DRAUGHTING_MODEL('Right',(#18,#33),#1999);
+#29=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#131,#132,
+#133,#134,#135,#136,#137,#138,#139,#140,#141,#142,#143,#144,#145,#146,#147,
+#148,#149,#150,#151,#152,#153,#154,#155,#156,#157,#158,#159,#160,#161,#162,
+#163,#164,#165,#166,#167,#168,#169,#170,#171,#172,#173,#174,#175,#176,#177,
+#178,#179,#180,#181,#182,#183,#184,#185,#186,#187,#188,#189,#190,#191,#192,
+#193,#194,#195,#196,#197,#198,#199,#200,#201,#202,#203,#204,#205,#206,#207,
+#208,#209,#210,#211,#212,#213,#214,#215,#216,#217,#218,#219,#220,#221,#222,
+#223),#2000);
+#30=CAMERA_MODEL_D3('Isometric',#1228,#34);
+#31=CAMERA_MODEL_D3('Front',#1230,#35);
+#32=CAMERA_MODEL_D3('Top',#1232,#36);
+#33=CAMERA_MODEL_D3('Right',#1234,#37);
+#34=VIEW_VOLUME(.PARALLEL.,#1982,16.9875424688562,0.,.F.,0.,.F.,.F.,#38);
+#35=VIEW_VOLUME(.PARALLEL.,#1985,117.693146607172,0.,.F.,0.,.F.,.F.,#39);
+#36=VIEW_VOLUME(.PARALLEL.,#1988,117.693146607172,0.,.F.,0.,.F.,.F.,#40);
+#37=VIEW_VOLUME(.PARALLEL.,#1991,117.693146607172,0.,.F.,0.,.F.,.F.,#41);
+#38=PLANAR_BOX('view window',0.,0.,#1229);
+#39=PLANAR_BOX('view window',0.,0.,#1231);
+#40=PLANAR_BOX('view window',0.,0.,#1233);
+#41=PLANAR_BOX('view window',0.,0.,#1235);
+#42=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('',(#43,#44,#45,
+#46,#47,#48),#1999);
+#43=GEOMETRIC_CURVE_SET('Sketch1',(#57,#58,#59,#60,#61,#62,#63,#64));
+#44=GEOMETRIC_CURVE_SET('Sketch2',(#65,#66,#67,#68,#69,#70,#71,#72,#73,
+#74,#75,#76,#77,#78,#79,#80,#81,#82,#83));
+#45=GEOMETRIC_CURVE_SET('Sketch3',(#84,#85,#86,#87,#560,#561,#562,#563));
+#46=GEOMETRIC_CURVE_SET('Sketch4',(#52,#53,#54,#55,#568,#569,#570,#571));
+#47=GEOMETRIC_CURVE_SET('Sketch6',(#88,#89,#90,#91,#92,#93,#94,#95,#96,
+#97,#98,#99,#100,#101,#102,#103,#104,#105,#106,#107,#108,#109,#110,#111,
+#112,#113,#114,#115,#116,#117,#118));
+#48=GEOMETRIC_CURVE_SET('Sketch7',(#119,#120,#121,#122,#123,#124,#125,#126,
+#127,#128,#129,#130));
+#49=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#2007,#51);
+#50=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#2007,#42);
+#51=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#225),#1999);
+#52=TRIMMED_CURVE('',#564,(#1879,PARAMETER_VALUE(3.78509376238309)),(#1880,
+PARAMETER_VALUE(7.2104805251812)),.T.,.PARAMETER.);
+#53=TRIMMED_CURVE('',#565,(#1882,PARAMETER_VALUE(2.21429743558818)),(#1883,
+PARAMETER_VALUE(5.6396841983863)),.T.,.PARAMETER.);
+#54=TRIMMED_CURVE('',#566,(#1885,PARAMETER_VALUE(2.13333257133875)),(#1886,
+PARAMETER_VALUE(4.0688878715914)),.T.,.PARAMETER.);
+#55=TRIMMED_CURVE('',#567,(#1888,PARAMETER_VALUE(5.35589008917797)),(#1889,
+PARAMETER_VALUE(7.29144538943063)),.T.,.PARAMETER.);
+#56=INVISIBILITY((#132,#133,#134,#135,#136,#137,#138,#139,#140,#141,#142,
+#143,#144,#145,#146,#147,#148,#149,#150,#151,#152,#153,#154,#155,#156,#157,
+#158,#159,#160,#161,#162,#163,#164,#165,#166,#167,#168,#169,#170,#171,#172,
+#173,#174,#175,#176,#177,#178,#179,#180,#181,#182,#183,#184,#185,#186,#187,
+#188,#189,#190,#191,#192,#193,#194,#195,#196,#197,#198,#199,#200,#201,#202,
+#203,#204,#205,#206,#207,#208,#209,#210,#211,#212,#213,#214,#215,#216,#217,
+#218,#219,#220,#221,#222,#223));
+#57=POLYLINE('',(#1812,#1813));
+#58=POLYLINE('',(#1814,#1815));
+#59=POLYLINE('',(#1816,#1817));
+#60=POLYLINE('',(#1818,#1819));
+#61=POLYLINE('',(#1820,#1821));
+#62=POLYLINE('',(#1822,#1823));
+#63=POLYLINE('',(#1824,#1825));
+#64=POLYLINE('',(#1826,#1827));
+#65=POLYLINE('',(#1828,#1829));
+#66=POLYLINE('',(#1830,#1831));
+#67=POLYLINE('',(#1832,#1833));
+#68=POLYLINE('',(#1834,#1835));
+#69=POLYLINE('',(#1836,#1837));
+#70=POLYLINE('',(#1838,#1839));
+#71=POLYLINE('',(#1840,#1841));
+#72=POLYLINE('',(#1842,#1843));
+#73=POLYLINE('',(#1844,#1845));
+#74=POLYLINE('',(#1846,#1847));
+#75=POLYLINE('',(#1848,#1849));
+#76=POLYLINE('',(#1850,#1851));
+#77=POLYLINE('',(#1852,#1853));
+#78=POLYLINE('',(#1854,#1855));
+#79=POLYLINE('',(#1856,#1857));
+#80=POLYLINE('',(#1858,#1859));
+#81=POLYLINE('',(#1860,#1861));
+#82=POLYLINE('',(#1862,#1863));
+#83=POLYLINE('',(#1864,#1865));
+#84=POLYLINE('',(#1866,#1867));
+#85=POLYLINE('',(#1868,#1869));
+#86=POLYLINE('',(#1870,#1871));
+#87=POLYLINE('',(#1872,#1873));
+#88=POLYLINE('',(#1894,#1895));
+#89=POLYLINE('',(#1896,#1897));
+#90=POLYLINE('',(#1898,#1899));
+#91=POLYLINE('',(#1900,#1901));
+#92=POLYLINE('',(#1902,#1903));
+#93=POLYLINE('',(#1904,#1905));
+#94=POLYLINE('',(#1906,#1907));
+#95=POLYLINE('',(#1908,#1909));
+#96=POLYLINE('',(#1910,#1911));
+#97=POLYLINE('',(#1912,#1913));
+#98=POLYLINE('',(#1914,#1915));
+#99=POLYLINE('',(#1916,#1917));
+#100=POLYLINE('',(#1918,#1919));
+#101=POLYLINE('',(#1920,#1921));
+#102=POLYLINE('',(#1922,#1923));
+#103=POLYLINE('',(#1924,#1925));
+#104=POLYLINE('',(#1926,#1927));
+#105=POLYLINE('',(#1928,#1929));
+#106=POLYLINE('',(#1930,#1931));
+#107=POLYLINE('',(#1932,#1933));
+#108=POLYLINE('',(#1934,#1935));
+#109=POLYLINE('',(#1936,#1937));
+#110=POLYLINE('',(#1938,#1939));
+#111=POLYLINE('',(#1940,#1941));
+#112=POLYLINE('',(#1942,#1943));
+#113=POLYLINE('',(#1944,#1945));
+#114=POLYLINE('',(#1946,#1947));
+#115=POLYLINE('',(#1948,#1949));
+#116=POLYLINE('',(#1950,#1951));
+#117=POLYLINE('',(#1952,#1953));
+#118=POLYLINE('',(#1954,#1955));
+#119=POLYLINE('',(#1956,#1957));
+#120=POLYLINE('',(#1958,#1959));
+#121=POLYLINE('',(#1960,#1961));
+#122=POLYLINE('',(#1962,#1963));
+#123=POLYLINE('',(#1964,#1965));
+#124=POLYLINE('',(#1966,#1967));
+#125=POLYLINE('',(#1968,#1969));
+#126=POLYLINE('',(#1970,#1971));
+#127=POLYLINE('',(#1972,#1973));
+#128=POLYLINE('',(#1974,#1975));
+#129=POLYLINE('',(#1976,#1977));
+#130=POLYLINE('',(#1978,#1979));
+#131=STYLED_ITEM('',(#2016),#225);
+#132=STYLED_ITEM('',(#2018),#57);
+#133=STYLED_ITEM('',(#2018),#58);
+#134=STYLED_ITEM('',(#2018),#59);
+#135=STYLED_ITEM('',(#2018),#60);
+#136=STYLED_ITEM('',(#2018),#61);
+#137=STYLED_ITEM('',(#2018),#62);
+#138=STYLED_ITEM('',(#2018),#63);
+#139=STYLED_ITEM('',(#2018),#64);
+#140=STYLED_ITEM('',(#2017),#65);
+#141=STYLED_ITEM('',(#2018),#66);
+#142=STYLED_ITEM('',(#2018),#67);
+#143=STYLED_ITEM('',(#2018),#68);
+#144=STYLED_ITEM('',(#2018),#69);
+#145=STYLED_ITEM('',(#2017),#70);
+#146=STYLED_ITEM('',(#2018),#71);
+#147=STYLED_ITEM('',(#2018),#72);
+#148=STYLED_ITEM('',(#2018),#73);
+#149=STYLED_ITEM('',(#2018),#74);
+#150=STYLED_ITEM('',(#2017),#75);
+#151=STYLED_ITEM('',(#2018),#76);
+#152=STYLED_ITEM('',(#2018),#77);
+#153=STYLED_ITEM('',(#2018),#78);
+#154=STYLED_ITEM('',(#2018),#79);
+#155=STYLED_ITEM('',(#2018),#80);
+#156=STYLED_ITEM('',(#2018),#81);
+#157=STYLED_ITEM('',(#2018),#82);
+#158=STYLED_ITEM('',(#2018),#83);
+#159=STYLED_ITEM('',(#2017),#84);
+#160=STYLED_ITEM('',(#2017),#85);
+#161=STYLED_ITEM('',(#2017),#86);
+#162=STYLED_ITEM('',(#2017),#87);
+#163=STYLED_ITEM('',(#2018),#560);
+#164=STYLED_ITEM('',(#2018),#561);
+#165=STYLED_ITEM('',(#2018),#562);
+#166=STYLED_ITEM('',(#2018),#563);
+#167=STYLED_ITEM('',(#2017),#52);
+#168=STYLED_ITEM('',(#2017),#53);
+#169=STYLED_ITEM('',(#2017),#54);
+#170=STYLED_ITEM('',(#2017),#55);
+#171=STYLED_ITEM('',(#2018),#568);
+#172=STYLED_ITEM('',(#2018),#569);
+#173=STYLED_ITEM('',(#2018),#570);
+#174=STYLED_ITEM('',(#2018),#571);
+#175=STYLED_ITEM('',(#2017),#88);
+#176=STYLED_ITEM('',(#2017),#89);
+#177=STYLED_ITEM('',(#2017),#90);
+#178=STYLED_ITEM('',(#2018),#91);
+#179=STYLED_ITEM('',(#2018),#92);
+#180=STYLED_ITEM('',(#2018),#93);
+#181=STYLED_ITEM('',(#2018),#94);
+#182=STYLED_ITEM('',(#2017),#95);
+#183=STYLED_ITEM('',(#2018),#96);
+#184=STYLED_ITEM('',(#2018),#97);
+#185=STYLED_ITEM('',(#2018),#98);
+#186=STYLED_ITEM('',(#2018),#99);
+#187=STYLED_ITEM('',(#2018),#100);
+#188=STYLED_ITEM('',(#2018),#101);
+#189=STYLED_ITEM('',(#2018),#102);
+#190=STYLED_ITEM('',(#2018),#103);
+#191=STYLED_ITEM('',(#2018),#104);
+#192=STYLED_ITEM('',(#2018),#105);
+#193=STYLED_ITEM('',(#2018),#106);
+#194=STYLED_ITEM('',(#2018),#107);
+#195=STYLED_ITEM('',(#2017),#108);
+#196=STYLED_ITEM('',(#2018),#109);
+#197=STYLED_ITEM('',(#2018),#110);
+#198=STYLED_ITEM('',(#2018),#111);
+#199=STYLED_ITEM('',(#2018),#112);
+#200=STYLED_ITEM('',(#2017),#113);
+#201=STYLED_ITEM('',(#2017),#114);
+#202=STYLED_ITEM('',(#2018),#115);
+#203=STYLED_ITEM('',(#2018),#116);
+#204=STYLED_ITEM('',(#2018),#117);
+#205=STYLED_ITEM('',(#2018),#118);
+#206=STYLED_ITEM('',(#2017),#119);
+#207=STYLED_ITEM('',(#2017),#120);
+#208=STYLED_ITEM('',(#2017),#121);
+#209=STYLED_ITEM('',(#2017),#122);
+#210=STYLED_ITEM('',(#2018),#123);
+#211=STYLED_ITEM('',(#2018),#124);
+#212=STYLED_ITEM('',(#2018),#125);
+#213=STYLED_ITEM('',(#2018),#126);
+#214=STYLED_ITEM('',(#2017),#127);
+#215=STYLED_ITEM('',(#2017),#128);
+#216=STYLED_ITEM('',(#2017),#129);
+#217=STYLED_ITEM('',(#2017),#130);
+#218=STYLED_ITEM('',(#2019),#43);
+#219=STYLED_ITEM('',(#2020),#44);
+#220=STYLED_ITEM('',(#2021),#45);
+#221=STYLED_ITEM('',(#2022),#46);
+#222=STYLED_ITEM('',(#2023),#47);
+#223=STYLED_ITEM('',(#2024),#48);
+#224=STYLED_ITEM('',(#2025),#15);
+#225=MANIFOLD_SOLID_BREP('Solid1',#1106);
+#226=FACE_BOUND('',#313,.T.);
+#227=FACE_BOUND('',#314,.T.);
+#228=FACE_BOUND('',#315,.T.);
+#229=FACE_BOUND('',#316,.T.);
+#230=FACE_BOUND('',#317,.T.);
+#231=FACE_BOUND('',#328,.T.);
+#232=FACE_BOUND('',#329,.T.);
+#233=FACE_BOUND('',#330,.T.);
+#234=FACE_BOUND('',#331,.T.);
+#235=FACE_BOUND('',#332,.T.);
+#236=PLANE('',#1156);
+#237=PLANE('',#1157);
+#238=PLANE('',#1158);
+#239=PLANE('',#1173);
+#240=PLANE('',#1174);
+#241=PLANE('',#1187);
+#242=PLANE('',#1188);
+#243=PLANE('',#1189);
+#244=PLANE('',#1190);
+#245=PLANE('',#1198);
+#246=PLANE('',#1200);
+#247=PLANE('',#1201);
+#248=PLANE('',#1202);
+#249=PLANE('',#1203);
+#250=PLANE('',#1204);
+#251=PLANE('',#1205);
+#252=PLANE('',#1206);
+#253=PLANE('',#1207);
+#254=PLANE('',#1209);
+#255=PLANE('',#1211);
+#256=PLANE('',#1214);
+#257=PLANE('',#1215);
+#258=FACE_OUTER_BOUND('',#300,.T.);
+#259=FACE_OUTER_BOUND('',#301,.T.);
+#260=FACE_OUTER_BOUND('',#302,.T.);
+#261=FACE_OUTER_BOUND('',#303,.T.);
+#262=FACE_OUTER_BOUND('',#304,.T.);
+#263=FACE_OUTER_BOUND('',#305,.T.);
+#264=FACE_OUTER_BOUND('',#306,.T.);
+#265=FACE_OUTER_BOUND('',#307,.T.);
+#266=FACE_OUTER_BOUND('',#308,.T.);
+#267=FACE_OUTER_BOUND('',#309,.T.);
+#268=FACE_OUTER_BOUND('',#310,.T.);
+#269=FACE_OUTER_BOUND('',#311,.T.);
+#270=FACE_OUTER_BOUND('',#312,.T.);
+#271=FACE_OUTER_BOUND('',#318,.T.);
+#272=FACE_OUTER_BOUND('',#319,.T.);
+#273=FACE_OUTER_BOUND('',#320,.T.);
+#274=FACE_OUTER_BOUND('',#321,.T.);
+#275=FACE_OUTER_BOUND('',#322,.T.);
+#276=FACE_OUTER_BOUND('',#323,.T.);
+#277=FACE_OUTER_BOUND('',#324,.T.);
+#278=FACE_OUTER_BOUND('',#325,.T.);
+#279=FACE_OUTER_BOUND('',#326,.T.);
+#280=FACE_OUTER_BOUND('',#327,.T.);
+#281=FACE_OUTER_BOUND('',#333,.T.);
+#282=FACE_OUTER_BOUND('',#334,.T.);
+#283=FACE_OUTER_BOUND('',#335,.T.);
+#284=FACE_OUTER_BOUND('',#336,.T.);
+#285=FACE_OUTER_BOUND('',#337,.T.);
+#286=FACE_OUTER_BOUND('',#338,.T.);
+#287=FACE_OUTER_BOUND('',#339,.T.);
+#288=FACE_OUTER_BOUND('',#340,.T.);
+#289=FACE_OUTER_BOUND('',#341,.T.);
+#290=FACE_OUTER_BOUND('',#342,.T.);
+#291=FACE_OUTER_BOUND('',#343,.T.);
+#292=FACE_OUTER_BOUND('',#344,.T.);
+#293=FACE_OUTER_BOUND('',#345,.T.);
+#294=FACE_OUTER_BOUND('',#346,.T.);
+#295=FACE_OUTER_BOUND('',#347,.T.);
+#296=FACE_OUTER_BOUND('',#348,.T.);
+#297=FACE_OUTER_BOUND('',#349,.T.);
+#298=FACE_OUTER_BOUND('',#350,.T.);
+#299=FACE_OUTER_BOUND('',#351,.T.);
+#300=EDGE_LOOP('',(#788,#789,#790,#791));
+#301=EDGE_LOOP('',(#792,#793,#794,#795));
+#302=EDGE_LOOP('',(#796,#797,#798,#799));
+#303=EDGE_LOOP('',(#800,#801,#802,#803));
+#304=EDGE_LOOP('',(#804,#805,#806,#807));
+#305=EDGE_LOOP('',(#808,#809,#810,#811));
+#306=EDGE_LOOP('',(#812,#813,#814,#815));
+#307=EDGE_LOOP('',(#816,#817,#818,#819));
+#308=EDGE_LOOP('',(#820,#821,#822,#823));
+#309=EDGE_LOOP('',(#824,#825,#826,#827));
+#310=EDGE_LOOP('',(#828,#829,#830,#831));
+#311=EDGE_LOOP('',(#832,#833,#834,#835));
+#312=EDGE_LOOP('',(#836,#837,#838,#839,#840,#841,#842,#843));
+#313=EDGE_LOOP('',(#844,#845));
+#314=EDGE_LOOP('',(#846,#847));
+#315=EDGE_LOOP('',(#848,#849));
+#316=EDGE_LOOP('',(#850,#851));
+#317=EDGE_LOOP('',(#852,#853,#854,#855,#856,#857,#858,#859,#860,#861,#862,
+#863,#864,#865,#866,#867,#868,#869,#870,#871,#872,#873,#874,#875,#876,#877,
+#878,#879));
+#318=EDGE_LOOP('',(#880,#881,#882,#883));
+#319=EDGE_LOOP('',(#884,#885,#886,#887));
+#320=EDGE_LOOP('',(#888,#889,#890,#891,#892,#893));
+#321=EDGE_LOOP('',(#894,#895,#896,#897,#898,#899));
+#322=EDGE_LOOP('',(#900,#901,#902,#903,#904,#905));
+#323=EDGE_LOOP('',(#906,#907,#908,#909,#910,#911));
+#324=EDGE_LOOP('',(#912,#913,#914,#915));
+#325=EDGE_LOOP('',(#916,#917,#918,#919));
+#326=EDGE_LOOP('',(#920,#921,#922,#923));
+#327=EDGE_LOOP('',(#924,#925,#926,#927,#928,#929,#930,#931));
+#328=EDGE_LOOP('',(#932,#933,#934,#935,#936,#937,#938,#939,#940,#941,#942,
+#943,#944,#945,#946,#947,#948,#949,#950,#951,#952,#953,#954,#955,#956,#957,
+#958,#959));
+#329=EDGE_LOOP('',(#960,#961));
+#330=EDGE_LOOP('',(#962,#963));
+#331=EDGE_LOOP('',(#964,#965));
+#332=EDGE_LOOP('',(#966,#967));
+#333=EDGE_LOOP('',(#968,#969,#970,#971));
+#334=EDGE_LOOP('',(#972,#973,#974,#975));
+#335=EDGE_LOOP('',(#976,#977,#978,#979));
+#336=EDGE_LOOP('',(#980,#981,#982,#983));
+#337=EDGE_LOOP('',(#984,#985,#986,#987));
+#338=EDGE_LOOP('',(#988,#989,#990,#991));
+#339=EDGE_LOOP('',(#992,#993,#994,#995));
+#340=EDGE_LOOP('',(#996,#997,#998,#999));
+#341=EDGE_LOOP('',(#1000,#1001,#1002,#1003));
+#342=EDGE_LOOP('',(#1004,#1005,#1006,#1007));
+#343=EDGE_LOOP('',(#1008,#1009,#1010,#1011));
+#344=EDGE_LOOP('',(#1012,#1013,#1014,#1015));
+#345=EDGE_LOOP('',(#1016,#1017,#1018,#1019));
+#346=EDGE_LOOP('',(#1020,#1021,#1022,#1023));
+#347=EDGE_LOOP('',(#1024,#1025,#1026,#1027));
+#348=EDGE_LOOP('',(#1028,#1029,#1030,#1031));
+#349=EDGE_LOOP('',(#1032,#1033,#1034,#1035));
+#350=EDGE_LOOP('',(#1036,#1037,#1038,#1039));
+#351=EDGE_LOOP('',(#1040,#1041,#1042,#1043));
+#352=LINE('',#1559,#432);
+#353=LINE('',#1562,#433);
+#354=LINE('',#1567,#434);
+#355=LINE('',#1574,#435);
+#356=LINE('',#1577,#436);
+#357=LINE('',#1582,#437);
+#358=LINE('',#1589,#438);
+#359=LINE('',#1592,#439);
+#360=LINE('',#1597,#440);
+#361=LINE('',#1604,#441);
+#362=LINE('',#1610,#442);
+#363=LINE('',#1613,#443);
+#364=LINE('',#1618,#444);
+#365=LINE('',#1625,#445);
+#366=LINE('',#1629,#446);
+#367=LINE('',#1631,#447);
+#368=LINE('',#1633,#448);
+#369=LINE('',#1634,#449);
+#370=LINE('',#1638,#450);
+#371=LINE('',#1640,#451);
+#372=LINE('',#1642,#452);
+#373=LINE('',#1643,#453);
+#374=LINE('',#1649,#454);
+#375=LINE('',#1653,#455);
+#376=LINE('',#1657,#456);
+#377=LINE('',#1660,#457);
+#378=LINE('',#1678,#458);
+#379=LINE('',#1680,#459);
+#380=LINE('',#1681,#460);
+#381=LINE('',#1682,#461);
+#382=LINE('',#1684,#462);
+#383=LINE('',#1685,#463);
+#384=LINE('',#1687,#464);
+#385=LINE('',#1689,#465);
+#386=LINE('',#1691,#466);
+#387=LINE('',#1694,#467);
+#388=LINE('',#1695,#468);
+#389=LINE('',#1697,#469);
+#390=LINE('',#1701,#470);
+#391=LINE('',#1702,#471);
+#392=LINE('',#1705,#472);
+#393=LINE('',#1706,#473);
+#394=LINE('',#1709,#474);
+#395=LINE('',#1710,#475);
+#396=LINE('',#1713,#476);
+#397=LINE('',#1719,#477);
+#398=LINE('',#1725,#478);
+#399=LINE('',#1731,#479);
+#400=LINE('',#1736,#480);
+#401=LINE('',#1738,#481);
+#402=LINE('',#1740,#482);
+#403=LINE('',#1746,#483);
+#404=LINE('',#1750,#484);
+#405=LINE('',#1754,#485);
+#406=LINE('',#1757,#486);
+#407=LINE('',#1759,#487);
+#408=LINE('',#1761,#488);
+#409=LINE('',#1764,#489);
+#410=LINE('',#1766,#490);
+#411=LINE('',#1770,#491);
+#412=LINE('',#1772,#492);
+#413=LINE('',#1773,#493);
+#414=LINE('',#1775,#494);
+#415=LINE('',#1776,#495);
+#416=LINE('',#1778,#496);
+#417=LINE('',#1779,#497);
+#418=LINE('',#1781,#498);
+#419=LINE('',#1783,#499);
+#420=LINE('',#1784,#500);
+#421=LINE('',#1786,#501);
+#422=LINE('',#1788,#502);
+#423=LINE('',#1791,#503);
+#424=LINE('',#1797,#504);
+#425=LINE('',#1798,#505);
+#426=LINE('',#1800,#506);
+#427=LINE('',#1802,#507);
+#428=LINE('',#1803,#508);
+#429=LINE('',#1805,#509);
+#430=LINE('',#1807,#510);
+#431=LINE('',#1809,#511);
+#432=VECTOR('',#1247,10.);
+#433=VECTOR('',#1250,10.);
+#434=VECTOR('',#1255,10.);
+#435=VECTOR('',#1262,10.);
+#436=VECTOR('',#1265,10.);
+#437=VECTOR('',#1270,10.);
+#438=VECTOR('',#1277,10.);
+#439=VECTOR('',#1280,10.);
+#440=VECTOR('',#1285,10.);
+#441=VECTOR('',#1294,10.);
+#442=VECTOR('',#1299,10.);
+#443=VECTOR('',#1302,10.);
+#444=VECTOR('',#1307,10.);
+#445=VECTOR('',#1316,10.);
+#446=VECTOR('',#1319,10.);
+#447=VECTOR('',#1320,10.);
+#448=VECTOR('',#1321,10.);
+#449=VECTOR('',#1322,10.);
+#450=VECTOR('',#1325,10.);
+#451=VECTOR('',#1326,10.);
+#452=VECTOR('',#1327,10.);
+#453=VECTOR('',#1328,10.);
+#454=VECTOR('',#1333,10.);
+#455=VECTOR('',#1336,10.);
+#456=VECTOR('',#1339,10.);
+#457=VECTOR('',#1342,10.);
+#458=VECTOR('',#1359,10.);
+#459=VECTOR('',#1360,10.);
+#460=VECTOR('',#1361,10.);
+#461=VECTOR('',#1362,10.);
+#462=VECTOR('',#1363,10.);
+#463=VECTOR('',#1364,10.);
+#464=VECTOR('',#1365,10.);
+#465=VECTOR('',#1366,10.);
+#466=VECTOR('',#1367,10.);
+#467=VECTOR('',#1370,10.);
+#468=VECTOR('',#1371,10.);
+#469=VECTOR('',#1372,10.);
+#470=VECTOR('',#1375,10.);
+#471=VECTOR('',#1376,10.);
+#472=VECTOR('',#1379,10.);
+#473=VECTOR('',#1380,10.);
+#474=VECTOR('',#1383,10.);
+#475=VECTOR('',#1384,10.);
+#476=VECTOR('',#1387,1.25);
+#477=VECTOR('',#1394,1.25);
+#478=VECTOR('',#1401,1.25);
+#479=VECTOR('',#1408,1.25);
+#480=VECTOR('',#1415,10.);
+#481=VECTOR('',#1418,10.);
+#482=VECTOR('',#1421,10.);
+#483=VECTOR('',#1426,10.);
+#484=VECTOR('',#1429,10.);
+#485=VECTOR('',#1432,10.);
+#486=VECTOR('',#1435,10.);
+#487=VECTOR('',#1436,10.);
+#488=VECTOR('',#1437,10.);
+#489=VECTOR('',#1440,10.);
+#490=VECTOR('',#1441,10.);
+#491=VECTOR('',#1444,10.);
+#492=VECTOR('',#1445,10.);
+#493=VECTOR('',#1446,10.);
+#494=VECTOR('',#1447,10.);
+#495=VECTOR('',#1448,10.);
+#496=VECTOR('',#1451,10.);
+#497=VECTOR('',#1452,10.);
+#498=VECTOR('',#1455,10.);
+#499=VECTOR('',#1458,10.);
+#500=VECTOR('',#1459,10.);
+#501=VECTOR('',#1462,10.);
+#502=VECTOR('',#1465,10.);
+#503=VECTOR('',#1470,10.);
+#504=VECTOR('',#1481,10.);
+#505=VECTOR('',#1482,10.);
+#506=VECTOR('',#1485,10.);
+#507=VECTOR('',#1488,10.);
+#508=VECTOR('',#1489,10.);
+#509=VECTOR('',#1492,10.);
+#510=VECTOR('',#1495,10.);
+#511=VECTOR('',#1498,10.);
+#512=CIRCLE('',#1127,1.);
+#513=CIRCLE('',#1128,1.);
+#514=CIRCLE('',#1130,2.25);
+#515=CIRCLE('',#1131,2.25);
+#516=CIRCLE('',#1133,1.);
+#517=CIRCLE('',#1134,1.);
+#518=CIRCLE('',#1136,2.25);
+#519=CIRCLE('',#1137,2.25);
+#520=CIRCLE('',#1139,1.);
+#521=CIRCLE('',#1140,1.);
+#522=CIRCLE('',#1142,2.25);
+#523=CIRCLE('',#1143,2.25);
+#524=CIRCLE('',#1145,1.);
+#525=CIRCLE('',#1146,1.);
+#526=CIRCLE('',#1148,1.);
+#527=CIRCLE('',#1149,1.);
+#528=CIRCLE('',#1151,2.25);
+#529=CIRCLE('',#1152,2.25);
+#530=CIRCLE('',#1154,1.);
+#531=CIRCLE('',#1155,1.);
+#532=CIRCLE('',#1159,3.25);
+#533=CIRCLE('',#1160,3.25);
+#534=CIRCLE('',#1161,3.25);
+#535=CIRCLE('',#1162,3.25);
+#536=CIRCLE('',#1163,1.25);
+#537=CIRCLE('',#1164,1.25);
+#538=CIRCLE('',#1165,1.25);
+#539=CIRCLE('',#1166,1.25);
+#540=CIRCLE('',#1167,1.25);
+#541=CIRCLE('',#1168,1.25);
+#542=CIRCLE('',#1169,1.25);
+#543=CIRCLE('',#1170,1.25);
+#544=CIRCLE('',#1171,1.);
+#545=CIRCLE('',#1172,1.);
+#546=CIRCLE('',#1176,1.25);
+#547=CIRCLE('',#1177,1.25);
+#548=CIRCLE('',#1179,1.25);
+#549=CIRCLE('',#1180,1.25);
+#550=CIRCLE('',#1182,1.25);
+#551=CIRCLE('',#1183,1.25);
+#552=CIRCLE('',#1185,1.25);
+#553=CIRCLE('',#1186,1.25);
+#554=CIRCLE('',#1191,3.25);
+#555=CIRCLE('',#1192,3.25);
+#556=CIRCLE('',#1193,3.25);
+#557=CIRCLE('',#1194,3.25);
+#558=CIRCLE('',#1195,1.);
+#559=CIRCLE('',#1196,1.);
+#560=CIRCLE('',#1216,2.25);
+#561=CIRCLE('',#1217,2.25);
+#562=CIRCLE('',#1218,2.25);
+#563=CIRCLE('',#1219,2.25);
+#564=CIRCLE('',#1220,2.25);
+#565=CIRCLE('',#1221,2.25);
+#566=CIRCLE('',#1222,2.25);
+#567=CIRCLE('',#1223,2.25);
+#568=CIRCLE('',#1224,1.25);
+#569=CIRCLE('',#1225,1.25);
+#570=CIRCLE('',#1226,1.25);
+#571=CIRCLE('',#1227,1.25);
+#572=VERTEX_POINT('',#1555);
+#573=VERTEX_POINT('',#1556);
+#574=VERTEX_POINT('',#1558);
+#575=VERTEX_POINT('',#1560);
+#576=VERTEX_POINT('',#1564);
+#577=VERTEX_POINT('',#1566);
+#578=VERTEX_POINT('',#1570);
+#579=VERTEX_POINT('',#1571);
+#580=VERTEX_POINT('',#1573);
+#581=VERTEX_POINT('',#1575);
+#582=VERTEX_POINT('',#1579);
+#583=VERTEX_POINT('',#1581);
+#584=VERTEX_POINT('',#1585);
+#585=VERTEX_POINT('',#1586);
+#586=VERTEX_POINT('',#1588);
+#587=VERTEX_POINT('',#1590);
+#588=VERTEX_POINT('',#1594);
+#589=VERTEX_POINT('',#1596);
+#590=VERTEX_POINT('',#1600);
+#591=VERTEX_POINT('',#1602);
+#592=VERTEX_POINT('',#1606);
+#593=VERTEX_POINT('',#1607);
+#594=VERTEX_POINT('',#1609);
+#595=VERTEX_POINT('',#1611);
+#596=VERTEX_POINT('',#1615);
+#597=VERTEX_POINT('',#1617);
+#598=VERTEX_POINT('',#1621);
+#599=VERTEX_POINT('',#1623);
+#600=VERTEX_POINT('',#1627);
+#601=VERTEX_POINT('',#1628);
+#602=VERTEX_POINT('',#1630);
+#603=VERTEX_POINT('',#1632);
+#604=VERTEX_POINT('',#1636);
+#605=VERTEX_POINT('',#1637);
+#606=VERTEX_POINT('',#1639);
+#607=VERTEX_POINT('',#1641);
+#608=VERTEX_POINT('',#1645);
+#609=VERTEX_POINT('',#1646);
+#610=VERTEX_POINT('',#1648);
+#611=VERTEX_POINT('',#1650);
+#612=VERTEX_POINT('',#1652);
+#613=VERTEX_POINT('',#1654);
+#614=VERTEX_POINT('',#1656);
+#615=VERTEX_POINT('',#1658);
+#616=VERTEX_POINT('',#1661);
+#617=VERTEX_POINT('',#1662);
+#618=VERTEX_POINT('',#1665);
+#619=VERTEX_POINT('',#1666);
+#620=VERTEX_POINT('',#1669);
+#621=VERTEX_POINT('',#1670);
+#622=VERTEX_POINT('',#1673);
+#623=VERTEX_POINT('',#1674);
+#624=VERTEX_POINT('',#1677);
+#625=VERTEX_POINT('',#1679);
+#626=VERTEX_POINT('',#1683);
+#627=VERTEX_POINT('',#1686);
+#628=VERTEX_POINT('',#1688);
+#629=VERTEX_POINT('',#1690);
+#630=VERTEX_POINT('',#1692);
+#631=VERTEX_POINT('',#1696);
+#632=VERTEX_POINT('',#1698);
+#633=VERTEX_POINT('',#1700);
+#634=VERTEX_POINT('',#1704);
+#635=VERTEX_POINT('',#1708);
+#636=VERTEX_POINT('',#1712);
+#637=VERTEX_POINT('',#1714);
+#638=VERTEX_POINT('',#1718);
+#639=VERTEX_POINT('',#1720);
+#640=VERTEX_POINT('',#1724);
+#641=VERTEX_POINT('',#1726);
+#642=VERTEX_POINT('',#1730);
+#643=VERTEX_POINT('',#1732);
+#644=VERTEX_POINT('',#1742);
+#645=VERTEX_POINT('',#1743);
+#646=VERTEX_POINT('',#1745);
+#647=VERTEX_POINT('',#1747);
+#648=VERTEX_POINT('',#1749);
+#649=VERTEX_POINT('',#1751);
+#650=VERTEX_POINT('',#1753);
+#651=VERTEX_POINT('',#1755);
+#652=VERTEX_POINT('',#1758);
+#653=VERTEX_POINT('',#1760);
+#654=VERTEX_POINT('',#1762);
+#655=VERTEX_POINT('',#1765);
+#656=VERTEX_POINT('',#1767);
+#657=VERTEX_POINT('',#1769);
+#658=VERTEX_POINT('',#1771);
+#659=VERTEX_POINT('',#1774);
+#660=EDGE_CURVE('',#572,#573,#512,.T.);
+#661=EDGE_CURVE('',#573,#574,#352,.T.);
+#662=EDGE_CURVE('',#574,#575,#513,.T.);
+#663=EDGE_CURVE('',#575,#572,#353,.T.);
+#664=EDGE_CURVE('',#576,#573,#514,.T.);
+#665=EDGE_CURVE('',#577,#576,#354,.T.);
+#666=EDGE_CURVE('',#574,#577,#515,.T.);
+#667=EDGE_CURVE('',#578,#579,#516,.T.);
+#668=EDGE_CURVE('',#579,#580,#355,.T.);
+#669=EDGE_CURVE('',#580,#581,#517,.T.);
+#670=EDGE_CURVE('',#581,#578,#356,.T.);
+#671=EDGE_CURVE('',#582,#579,#518,.T.);
+#672=EDGE_CURVE('',#583,#582,#357,.T.);
+#673=EDGE_CURVE('',#580,#583,#519,.T.);
+#674=EDGE_CURVE('',#584,#585,#520,.T.);
+#675=EDGE_CURVE('',#585,#586,#358,.T.);
+#676=EDGE_CURVE('',#586,#587,#521,.T.);
+#677=EDGE_CURVE('',#587,#584,#359,.T.);
+#678=EDGE_CURVE('',#588,#585,#522,.T.);
+#679=EDGE_CURVE('',#589,#588,#360,.T.);
+#680=EDGE_CURVE('',#586,#589,#523,.T.);
+#681=EDGE_CURVE('',#590,#589,#524,.T.);
+#682=EDGE_CURVE('',#588,#591,#525,.T.);
+#683=EDGE_CURVE('',#591,#590,#361,.T.);
+#684=EDGE_CURVE('',#592,#593,#526,.T.);
+#685=EDGE_CURVE('',#593,#594,#362,.T.);
+#686=EDGE_CURVE('',#594,#595,#527,.T.);
+#687=EDGE_CURVE('',#595,#592,#363,.T.);
+#688=EDGE_CURVE('',#596,#593,#528,.T.);
+#689=EDGE_CURVE('',#597,#596,#364,.T.);
+#690=EDGE_CURVE('',#594,#597,#529,.T.);
+#691=EDGE_CURVE('',#598,#597,#530,.T.);
+#692=EDGE_CURVE('',#596,#599,#531,.T.);
+#693=EDGE_CURVE('',#599,#598,#365,.T.);
+#694=EDGE_CURVE('',#600,#601,#366,.T.);
+#695=EDGE_CURVE('',#602,#600,#367,.T.);
+#696=EDGE_CURVE('',#603,#602,#368,.T.);
+#697=EDGE_CURVE('',#603,#601,#369,.T.);
+#698=EDGE_CURVE('',#604,#605,#370,.T.);
+#699=EDGE_CURVE('',#606,#604,#371,.T.);
+#700=EDGE_CURVE('',#607,#606,#372,.T.);
+#701=EDGE_CURVE('',#607,#605,#373,.T.);
+#702=EDGE_CURVE('',#608,#609,#532,.T.);
+#703=EDGE_CURVE('',#608,#610,#374,.T.);
+#704=EDGE_CURVE('',#611,#610,#533,.T.);
+#705=EDGE_CURVE('',#611,#612,#375,.T.);
+#706=EDGE_CURVE('',#613,#612,#534,.T.);
+#707=EDGE_CURVE('',#613,#614,#376,.T.);
+#708=EDGE_CURVE('',#615,#614,#535,.T.);
+#709=EDGE_CURVE('',#615,#609,#377,.T.);
+#710=EDGE_CURVE('',#616,#617,#536,.T.);
+#711=EDGE_CURVE('',#617,#616,#537,.T.);
+#712=EDGE_CURVE('',#618,#619,#538,.T.);
+#713=EDGE_CURVE('',#619,#618,#539,.T.);
+#714=EDGE_CURVE('',#620,#621,#540,.T.);
+#715=EDGE_CURVE('',#621,#620,#541,.T.);
+#716=EDGE_CURVE('',#622,#623,#542,.T.);
+#717=EDGE_CURVE('',#623,#622,#543,.T.);
+#718=EDGE_CURVE('',#624,#607,#378,.T.);
+#719=EDGE_CURVE('',#606,#625,#379,.T.);
+#720=EDGE_CURVE('',#625,#582,#380,.T.);
+#721=EDGE_CURVE('',#578,#575,#381,.T.);
+#722=EDGE_CURVE('',#577,#626,#382,.T.);
+#723=EDGE_CURVE('',#626,#603,#383,.T.);
+#724=EDGE_CURVE('',#602,#627,#384,.T.);
+#725=EDGE_CURVE('',#627,#628,#385,.T.);
+#726=EDGE_CURVE('',#628,#629,#386,.T.);
+#727=EDGE_CURVE('',#630,#629,#544,.T.);
+#728=EDGE_CURVE('',#630,#599,#387,.T.);
+#729=EDGE_CURVE('',#592,#591,#388,.T.);
+#730=EDGE_CURVE('',#584,#631,#389,.T.);
+#731=EDGE_CURVE('',#632,#631,#545,.T.);
+#732=EDGE_CURVE('',#632,#633,#390,.T.);
+#733=EDGE_CURVE('',#633,#624,#391,.T.);
+#734=EDGE_CURVE('',#624,#634,#392,.T.);
+#735=EDGE_CURVE('',#605,#634,#393,.T.);
+#736=EDGE_CURVE('',#626,#635,#394,.T.);
+#737=EDGE_CURVE('',#601,#635,#395,.T.);
+#738=EDGE_CURVE('',#623,#636,#396,.T.);
+#739=EDGE_CURVE('',#637,#636,#546,.T.);
+#740=EDGE_CURVE('',#636,#637,#547,.T.);
+#741=EDGE_CURVE('',#621,#638,#397,.T.);
+#742=EDGE_CURVE('',#639,#638,#548,.T.);
+#743=EDGE_CURVE('',#638,#639,#549,.T.);
+#744=EDGE_CURVE('',#619,#640,#398,.T.);
+#745=EDGE_CURVE('',#641,#640,#550,.T.);
+#746=EDGE_CURVE('',#640,#641,#551,.T.);
+#747=EDGE_CURVE('',#617,#642,#399,.T.);
+#748=EDGE_CURVE('',#643,#642,#552,.T.);
+#749=EDGE_CURVE('',#642,#643,#553,.T.);
+#750=EDGE_CURVE('',#635,#576,#400,.T.);
+#751=EDGE_CURVE('',#581,#572,#401,.T.);
+#752=EDGE_CURVE('',#595,#590,#402,.T.);
+#753=EDGE_CURVE('',#644,#645,#554,.T.);
+#754=EDGE_CURVE('',#646,#644,#403,.T.);
+#755=EDGE_CURVE('',#647,#646,#555,.T.);
+#756=EDGE_CURVE('',#648,#647,#404,.T.);
+#757=EDGE_CURVE('',#649,#648,#556,.T.);
+#758=EDGE_CURVE('',#650,#649,#405,.T.);
+#759=EDGE_CURVE('',#651,#650,#557,.T.);
+#760=EDGE_CURVE('',#645,#651,#406,.T.);
+#761=EDGE_CURVE('',#634,#652,#407,.T.);
+#762=EDGE_CURVE('',#652,#653,#408,.T.);
+#763=EDGE_CURVE('',#654,#653,#558,.T.);
+#764=EDGE_CURVE('',#587,#654,#409,.T.);
+#765=EDGE_CURVE('',#655,#598,#410,.T.);
+#766=EDGE_CURVE('',#656,#655,#559,.T.);
+#767=EDGE_CURVE('',#656,#657,#411,.T.);
+#768=EDGE_CURVE('',#657,#658,#412,.T.);
+#769=EDGE_CURVE('',#658,#600,#413,.T.);
+#770=EDGE_CURVE('',#583,#659,#414,.T.);
+#771=EDGE_CURVE('',#659,#604,#415,.T.);
+#772=EDGE_CURVE('',#653,#632,#416,.T.);
+#773=EDGE_CURVE('',#631,#654,#417,.T.);
+#774=EDGE_CURVE('',#633,#652,#418,.T.);
+#775=EDGE_CURVE('',#629,#656,#419,.T.);
+#776=EDGE_CURVE('',#655,#630,#420,.T.);
+#777=EDGE_CURVE('',#628,#657,#421,.T.);
+#778=EDGE_CURVE('',#625,#659,#422,.T.);
+#779=EDGE_CURVE('',#627,#658,#423,.T.);
+#780=EDGE_CURVE('',#609,#644,#424,.T.);
+#781=EDGE_CURVE('',#645,#608,#425,.T.);
+#782=EDGE_CURVE('',#610,#651,#426,.T.);
+#783=EDGE_CURVE('',#614,#647,#427,.T.);
+#784=EDGE_CURVE('',#646,#615,#428,.T.);
+#785=EDGE_CURVE('',#648,#613,#429,.T.);
+#786=EDGE_CURVE('',#612,#649,#430,.T.);
+#787=EDGE_CURVE('',#650,#611,#431,.T.);
+#788=ORIENTED_EDGE('',*,*,#660,.T.);
+#789=ORIENTED_EDGE('',*,*,#661,.T.);
+#790=ORIENTED_EDGE('',*,*,#662,.T.);
+#791=ORIENTED_EDGE('',*,*,#663,.T.);
+#792=ORIENTED_EDGE('',*,*,#661,.F.);
+#793=ORIENTED_EDGE('',*,*,#664,.F.);
+#794=ORIENTED_EDGE('',*,*,#665,.F.);
+#795=ORIENTED_EDGE('',*,*,#666,.F.);
+#796=ORIENTED_EDGE('',*,*,#667,.T.);
+#797=ORIENTED_EDGE('',*,*,#668,.T.);
+#798=ORIENTED_EDGE('',*,*,#669,.T.);
+#799=ORIENTED_EDGE('',*,*,#670,.T.);
+#800=ORIENTED_EDGE('',*,*,#668,.F.);
+#801=ORIENTED_EDGE('',*,*,#671,.F.);
+#802=ORIENTED_EDGE('',*,*,#672,.F.);
+#803=ORIENTED_EDGE('',*,*,#673,.F.);
+#804=ORIENTED_EDGE('',*,*,#674,.T.);
+#805=ORIENTED_EDGE('',*,*,#675,.T.);
+#806=ORIENTED_EDGE('',*,*,#676,.T.);
+#807=ORIENTED_EDGE('',*,*,#677,.T.);
+#808=ORIENTED_EDGE('',*,*,#675,.F.);
+#809=ORIENTED_EDGE('',*,*,#678,.F.);
+#810=ORIENTED_EDGE('',*,*,#679,.F.);
+#811=ORIENTED_EDGE('',*,*,#680,.F.);
+#812=ORIENTED_EDGE('',*,*,#681,.T.);
+#813=ORIENTED_EDGE('',*,*,#679,.T.);
+#814=ORIENTED_EDGE('',*,*,#682,.T.);
+#815=ORIENTED_EDGE('',*,*,#683,.T.);
+#816=ORIENTED_EDGE('',*,*,#684,.T.);
+#817=ORIENTED_EDGE('',*,*,#685,.T.);
+#818=ORIENTED_EDGE('',*,*,#686,.T.);
+#819=ORIENTED_EDGE('',*,*,#687,.T.);
+#820=ORIENTED_EDGE('',*,*,#685,.F.);
+#821=ORIENTED_EDGE('',*,*,#688,.F.);
+#822=ORIENTED_EDGE('',*,*,#689,.F.);
+#823=ORIENTED_EDGE('',*,*,#690,.F.);
+#824=ORIENTED_EDGE('',*,*,#691,.T.);
+#825=ORIENTED_EDGE('',*,*,#689,.T.);
+#826=ORIENTED_EDGE('',*,*,#692,.T.);
+#827=ORIENTED_EDGE('',*,*,#693,.T.);
+#828=ORIENTED_EDGE('',*,*,#694,.F.);
+#829=ORIENTED_EDGE('',*,*,#695,.F.);
+#830=ORIENTED_EDGE('',*,*,#696,.F.);
+#831=ORIENTED_EDGE('',*,*,#697,.T.);
+#832=ORIENTED_EDGE('',*,*,#698,.F.);
+#833=ORIENTED_EDGE('',*,*,#699,.F.);
+#834=ORIENTED_EDGE('',*,*,#700,.F.);
+#835=ORIENTED_EDGE('',*,*,#701,.T.);
+#836=ORIENTED_EDGE('',*,*,#702,.F.);
+#837=ORIENTED_EDGE('',*,*,#703,.T.);
+#838=ORIENTED_EDGE('',*,*,#704,.F.);
+#839=ORIENTED_EDGE('',*,*,#705,.T.);
+#840=ORIENTED_EDGE('',*,*,#706,.F.);
+#841=ORIENTED_EDGE('',*,*,#707,.T.);
+#842=ORIENTED_EDGE('',*,*,#708,.F.);
+#843=ORIENTED_EDGE('',*,*,#709,.T.);
+#844=ORIENTED_EDGE('',*,*,#710,.T.);
+#845=ORIENTED_EDGE('',*,*,#711,.T.);
+#846=ORIENTED_EDGE('',*,*,#712,.T.);
+#847=ORIENTED_EDGE('',*,*,#713,.T.);
+#848=ORIENTED_EDGE('',*,*,#714,.T.);
+#849=ORIENTED_EDGE('',*,*,#715,.T.);
+#850=ORIENTED_EDGE('',*,*,#716,.T.);
+#851=ORIENTED_EDGE('',*,*,#717,.T.);
+#852=ORIENTED_EDGE('',*,*,#718,.T.);
+#853=ORIENTED_EDGE('',*,*,#700,.T.);
+#854=ORIENTED_EDGE('',*,*,#719,.T.);
+#855=ORIENTED_EDGE('',*,*,#720,.T.);
+#856=ORIENTED_EDGE('',*,*,#671,.T.);
+#857=ORIENTED_EDGE('',*,*,#667,.F.);
+#858=ORIENTED_EDGE('',*,*,#721,.T.);
+#859=ORIENTED_EDGE('',*,*,#662,.F.);
+#860=ORIENTED_EDGE('',*,*,#666,.T.);
+#861=ORIENTED_EDGE('',*,*,#722,.T.);
+#862=ORIENTED_EDGE('',*,*,#723,.T.);
+#863=ORIENTED_EDGE('',*,*,#696,.T.);
+#864=ORIENTED_EDGE('',*,*,#724,.T.);
+#865=ORIENTED_EDGE('',*,*,#725,.T.);
+#866=ORIENTED_EDGE('',*,*,#726,.T.);
+#867=ORIENTED_EDGE('',*,*,#727,.F.);
+#868=ORIENTED_EDGE('',*,*,#728,.T.);
+#869=ORIENTED_EDGE('',*,*,#692,.F.);
+#870=ORIENTED_EDGE('',*,*,#688,.T.);
+#871=ORIENTED_EDGE('',*,*,#684,.F.);
+#872=ORIENTED_EDGE('',*,*,#729,.T.);
+#873=ORIENTED_EDGE('',*,*,#682,.F.);
+#874=ORIENTED_EDGE('',*,*,#678,.T.);
+#875=ORIENTED_EDGE('',*,*,#674,.F.);
+#876=ORIENTED_EDGE('',*,*,#730,.T.);
+#877=ORIENTED_EDGE('',*,*,#731,.F.);
+#878=ORIENTED_EDGE('',*,*,#732,.T.);
+#879=ORIENTED_EDGE('',*,*,#733,.T.);
+#880=ORIENTED_EDGE('',*,*,#718,.F.);
+#881=ORIENTED_EDGE('',*,*,#734,.T.);
+#882=ORIENTED_EDGE('',*,*,#735,.F.);
+#883=ORIENTED_EDGE('',*,*,#701,.F.);
+#884=ORIENTED_EDGE('',*,*,#723,.F.);
+#885=ORIENTED_EDGE('',*,*,#736,.T.);
+#886=ORIENTED_EDGE('',*,*,#737,.F.);
+#887=ORIENTED_EDGE('',*,*,#697,.F.);
+#888=ORIENTED_EDGE('',*,*,#716,.F.);
+#889=ORIENTED_EDGE('',*,*,#717,.F.);
+#890=ORIENTED_EDGE('',*,*,#738,.T.);
+#891=ORIENTED_EDGE('',*,*,#739,.F.);
+#892=ORIENTED_EDGE('',*,*,#740,.F.);
+#893=ORIENTED_EDGE('',*,*,#738,.F.);
+#894=ORIENTED_EDGE('',*,*,#714,.F.);
+#895=ORIENTED_EDGE('',*,*,#715,.F.);
+#896=ORIENTED_EDGE('',*,*,#741,.T.);
+#897=ORIENTED_EDGE('',*,*,#742,.F.);
+#898=ORIENTED_EDGE('',*,*,#743,.F.);
+#899=ORIENTED_EDGE('',*,*,#741,.F.);
+#900=ORIENTED_EDGE('',*,*,#712,.F.);
+#901=ORIENTED_EDGE('',*,*,#713,.F.);
+#902=ORIENTED_EDGE('',*,*,#744,.T.);
+#903=ORIENTED_EDGE('',*,*,#745,.F.);
+#904=ORIENTED_EDGE('',*,*,#746,.F.);
+#905=ORIENTED_EDGE('',*,*,#744,.F.);
+#906=ORIENTED_EDGE('',*,*,#710,.F.);
+#907=ORIENTED_EDGE('',*,*,#711,.F.);
+#908=ORIENTED_EDGE('',*,*,#747,.T.);
+#909=ORIENTED_EDGE('',*,*,#748,.F.);
+#910=ORIENTED_EDGE('',*,*,#749,.F.);
+#911=ORIENTED_EDGE('',*,*,#747,.F.);
+#912=ORIENTED_EDGE('',*,*,#665,.T.);
+#913=ORIENTED_EDGE('',*,*,#750,.F.);
+#914=ORIENTED_EDGE('',*,*,#736,.F.);
+#915=ORIENTED_EDGE('',*,*,#722,.F.);
+#916=ORIENTED_EDGE('',*,*,#663,.F.);
+#917=ORIENTED_EDGE('',*,*,#721,.F.);
+#918=ORIENTED_EDGE('',*,*,#670,.F.);
+#919=ORIENTED_EDGE('',*,*,#751,.T.);
+#920=ORIENTED_EDGE('',*,*,#683,.F.);
+#921=ORIENTED_EDGE('',*,*,#729,.F.);
+#922=ORIENTED_EDGE('',*,*,#687,.F.);
+#923=ORIENTED_EDGE('',*,*,#752,.T.);
+#924=ORIENTED_EDGE('',*,*,#753,.F.);
+#925=ORIENTED_EDGE('',*,*,#754,.F.);
+#926=ORIENTED_EDGE('',*,*,#755,.F.);
+#927=ORIENTED_EDGE('',*,*,#756,.F.);
+#928=ORIENTED_EDGE('',*,*,#757,.F.);
+#929=ORIENTED_EDGE('',*,*,#758,.F.);
+#930=ORIENTED_EDGE('',*,*,#759,.F.);
+#931=ORIENTED_EDGE('',*,*,#760,.F.);
+#932=ORIENTED_EDGE('',*,*,#735,.T.);
+#933=ORIENTED_EDGE('',*,*,#761,.T.);
+#934=ORIENTED_EDGE('',*,*,#762,.T.);
+#935=ORIENTED_EDGE('',*,*,#763,.F.);
+#936=ORIENTED_EDGE('',*,*,#764,.F.);
+#937=ORIENTED_EDGE('',*,*,#676,.F.);
+#938=ORIENTED_EDGE('',*,*,#680,.T.);
+#939=ORIENTED_EDGE('',*,*,#681,.F.);
+#940=ORIENTED_EDGE('',*,*,#752,.F.);
+#941=ORIENTED_EDGE('',*,*,#686,.F.);
+#942=ORIENTED_EDGE('',*,*,#690,.T.);
+#943=ORIENTED_EDGE('',*,*,#691,.F.);
+#944=ORIENTED_EDGE('',*,*,#765,.F.);
+#945=ORIENTED_EDGE('',*,*,#766,.F.);
+#946=ORIENTED_EDGE('',*,*,#767,.T.);
+#947=ORIENTED_EDGE('',*,*,#768,.T.);
+#948=ORIENTED_EDGE('',*,*,#769,.T.);
+#949=ORIENTED_EDGE('',*,*,#694,.T.);
+#950=ORIENTED_EDGE('',*,*,#737,.T.);
+#951=ORIENTED_EDGE('',*,*,#750,.T.);
+#952=ORIENTED_EDGE('',*,*,#664,.T.);
+#953=ORIENTED_EDGE('',*,*,#660,.F.);
+#954=ORIENTED_EDGE('',*,*,#751,.F.);
+#955=ORIENTED_EDGE('',*,*,#669,.F.);
+#956=ORIENTED_EDGE('',*,*,#673,.T.);
+#957=ORIENTED_EDGE('',*,*,#770,.T.);
+#958=ORIENTED_EDGE('',*,*,#771,.T.);
+#959=ORIENTED_EDGE('',*,*,#698,.T.);
+#960=ORIENTED_EDGE('',*,*,#739,.T.);
+#961=ORIENTED_EDGE('',*,*,#740,.T.);
+#962=ORIENTED_EDGE('',*,*,#742,.T.);
+#963=ORIENTED_EDGE('',*,*,#743,.T.);
+#964=ORIENTED_EDGE('',*,*,#745,.T.);
+#965=ORIENTED_EDGE('',*,*,#746,.T.);
+#966=ORIENTED_EDGE('',*,*,#748,.T.);
+#967=ORIENTED_EDGE('',*,*,#749,.T.);
+#968=ORIENTED_EDGE('',*,*,#763,.T.);
+#969=ORIENTED_EDGE('',*,*,#772,.T.);
+#970=ORIENTED_EDGE('',*,*,#731,.T.);
+#971=ORIENTED_EDGE('',*,*,#773,.T.);
+#972=ORIENTED_EDGE('',*,*,#772,.F.);
+#973=ORIENTED_EDGE('',*,*,#762,.F.);
+#974=ORIENTED_EDGE('',*,*,#774,.F.);
+#975=ORIENTED_EDGE('',*,*,#732,.F.);
+#976=ORIENTED_EDGE('',*,*,#727,.T.);
+#977=ORIENTED_EDGE('',*,*,#775,.T.);
+#978=ORIENTED_EDGE('',*,*,#766,.T.);
+#979=ORIENTED_EDGE('',*,*,#776,.T.);
+#980=ORIENTED_EDGE('',*,*,#775,.F.);
+#981=ORIENTED_EDGE('',*,*,#726,.F.);
+#982=ORIENTED_EDGE('',*,*,#777,.T.);
+#983=ORIENTED_EDGE('',*,*,#767,.F.);
+#984=ORIENTED_EDGE('',*,*,#771,.F.);
+#985=ORIENTED_EDGE('',*,*,#778,.F.);
+#986=ORIENTED_EDGE('',*,*,#719,.F.);
+#987=ORIENTED_EDGE('',*,*,#699,.T.);
+#988=ORIENTED_EDGE('',*,*,#672,.T.);
+#989=ORIENTED_EDGE('',*,*,#720,.F.);
+#990=ORIENTED_EDGE('',*,*,#778,.T.);
+#991=ORIENTED_EDGE('',*,*,#770,.F.);
+#992=ORIENTED_EDGE('',*,*,#769,.F.);
+#993=ORIENTED_EDGE('',*,*,#779,.F.);
+#994=ORIENTED_EDGE('',*,*,#724,.F.);
+#995=ORIENTED_EDGE('',*,*,#695,.T.);
+#996=ORIENTED_EDGE('',*,*,#725,.F.);
+#997=ORIENTED_EDGE('',*,*,#779,.T.);
+#998=ORIENTED_EDGE('',*,*,#768,.F.);
+#999=ORIENTED_EDGE('',*,*,#777,.F.);
+#1000=ORIENTED_EDGE('',*,*,#733,.F.);
+#1001=ORIENTED_EDGE('',*,*,#774,.T.);
+#1002=ORIENTED_EDGE('',*,*,#761,.F.);
+#1003=ORIENTED_EDGE('',*,*,#734,.F.);
+#1004=ORIENTED_EDGE('',*,*,#677,.F.);
+#1005=ORIENTED_EDGE('',*,*,#764,.T.);
+#1006=ORIENTED_EDGE('',*,*,#773,.F.);
+#1007=ORIENTED_EDGE('',*,*,#730,.F.);
+#1008=ORIENTED_EDGE('',*,*,#693,.F.);
+#1009=ORIENTED_EDGE('',*,*,#728,.F.);
+#1010=ORIENTED_EDGE('',*,*,#776,.F.);
+#1011=ORIENTED_EDGE('',*,*,#765,.T.);
+#1012=ORIENTED_EDGE('',*,*,#702,.T.);
+#1013=ORIENTED_EDGE('',*,*,#780,.T.);
+#1014=ORIENTED_EDGE('',*,*,#753,.T.);
+#1015=ORIENTED_EDGE('',*,*,#781,.T.);
+#1016=ORIENTED_EDGE('',*,*,#781,.F.);
+#1017=ORIENTED_EDGE('',*,*,#760,.T.);
+#1018=ORIENTED_EDGE('',*,*,#782,.F.);
+#1019=ORIENTED_EDGE('',*,*,#703,.F.);
+#1020=ORIENTED_EDGE('',*,*,#708,.T.);
+#1021=ORIENTED_EDGE('',*,*,#783,.T.);
+#1022=ORIENTED_EDGE('',*,*,#755,.T.);
+#1023=ORIENTED_EDGE('',*,*,#784,.T.);
+#1024=ORIENTED_EDGE('',*,*,#783,.F.);
+#1025=ORIENTED_EDGE('',*,*,#707,.F.);
+#1026=ORIENTED_EDGE('',*,*,#785,.F.);
+#1027=ORIENTED_EDGE('',*,*,#756,.T.);
+#1028=ORIENTED_EDGE('',*,*,#706,.T.);
+#1029=ORIENTED_EDGE('',*,*,#786,.T.);
+#1030=ORIENTED_EDGE('',*,*,#757,.T.);
+#1031=ORIENTED_EDGE('',*,*,#785,.T.);
+#1032=ORIENTED_EDGE('',*,*,#704,.T.);
+#1033=ORIENTED_EDGE('',*,*,#782,.T.);
+#1034=ORIENTED_EDGE('',*,*,#759,.T.);
+#1035=ORIENTED_EDGE('',*,*,#787,.T.);
+#1036=ORIENTED_EDGE('',*,*,#786,.F.);
+#1037=ORIENTED_EDGE('',*,*,#705,.F.);
+#1038=ORIENTED_EDGE('',*,*,#787,.F.);
+#1039=ORIENTED_EDGE('',*,*,#758,.T.);
+#1040=ORIENTED_EDGE('',*,*,#780,.F.);
+#1041=ORIENTED_EDGE('',*,*,#709,.F.);
+#1042=ORIENTED_EDGE('',*,*,#784,.F.);
+#1043=ORIENTED_EDGE('',*,*,#754,.T.);
+#1044=CYLINDRICAL_SURFACE('',#1126,1.);
+#1045=CYLINDRICAL_SURFACE('',#1129,2.25);
+#1046=CYLINDRICAL_SURFACE('',#1132,1.);
+#1047=CYLINDRICAL_SURFACE('',#1135,2.25);
+#1048=CYLINDRICAL_SURFACE('',#1138,1.);
+#1049=CYLINDRICAL_SURFACE('',#1141,2.25);
+#1050=CYLINDRICAL_SURFACE('',#1144,1.);
+#1051=CYLINDRICAL_SURFACE('',#1147,1.);
+#1052=CYLINDRICAL_SURFACE('',#1150,2.25);
+#1053=CYLINDRICAL_SURFACE('',#1153,1.);
+#1054=CYLINDRICAL_SURFACE('',#1175,1.25);
+#1055=CYLINDRICAL_SURFACE('',#1178,1.25);
+#1056=CYLINDRICAL_SURFACE('',#1181,1.25);
+#1057=CYLINDRICAL_SURFACE('',#1184,1.25);
+#1058=CYLINDRICAL_SURFACE('',#1197,1.);
+#1059=CYLINDRICAL_SURFACE('',#1199,1.);
+#1060=CYLINDRICAL_SURFACE('',#1208,3.25);
+#1061=CYLINDRICAL_SURFACE('',#1210,3.25);
+#1062=CYLINDRICAL_SURFACE('',#1212,3.25);
+#1063=CYLINDRICAL_SURFACE('',#1213,3.25);
+#1064=ADVANCED_FACE('',(#258),#1044,.F.);
+#1065=ADVANCED_FACE('',(#259),#1045,.T.);
+#1066=ADVANCED_FACE('',(#260),#1046,.F.);
+#1067=ADVANCED_FACE('',(#261),#1047,.T.);
+#1068=ADVANCED_FACE('',(#262),#1048,.F.);
+#1069=ADVANCED_FACE('',(#263),#1049,.T.);
+#1070=ADVANCED_FACE('',(#264),#1050,.F.);
+#1071=ADVANCED_FACE('',(#265),#1051,.F.);
+#1072=ADVANCED_FACE('',(#266),#1052,.T.);
+#1073=ADVANCED_FACE('',(#267),#1053,.F.);
+#1074=ADVANCED_FACE('',(#268),#236,.F.);
+#1075=ADVANCED_FACE('',(#269),#237,.F.);
+#1076=ADVANCED_FACE('',(#270,#226,#227,#228,#229,#230),#238,.T.);
+#1077=ADVANCED_FACE('',(#271),#239,.T.);
+#1078=ADVANCED_FACE('',(#272),#240,.T.);
+#1079=ADVANCED_FACE('',(#273),#1054,.F.);
+#1080=ADVANCED_FACE('',(#274),#1055,.F.);
+#1081=ADVANCED_FACE('',(#275),#1056,.F.);
+#1082=ADVANCED_FACE('',(#276),#1057,.F.);
+#1083=ADVANCED_FACE('',(#277),#241,.T.);
+#1084=ADVANCED_FACE('',(#278),#242,.T.);
+#1085=ADVANCED_FACE('',(#279),#243,.T.);
+#1086=ADVANCED_FACE('',(#280,#231,#232,#233,#234,#235),#244,.F.);
+#1087=ADVANCED_FACE('',(#281),#1058,.F.);
+#1088=ADVANCED_FACE('',(#282),#245,.T.);
+#1089=ADVANCED_FACE('',(#283),#1059,.F.);
+#1090=ADVANCED_FACE('',(#284),#246,.T.);
+#1091=ADVANCED_FACE('',(#285),#247,.T.);
+#1092=ADVANCED_FACE('',(#286),#248,.T.);
+#1093=ADVANCED_FACE('',(#287),#249,.T.);
+#1094=ADVANCED_FACE('',(#288),#250,.T.);
+#1095=ADVANCED_FACE('',(#289),#251,.T.);
+#1096=ADVANCED_FACE('',(#290),#252,.T.);
+#1097=ADVANCED_FACE('',(#291),#253,.T.);
+#1098=ADVANCED_FACE('',(#292),#1060,.T.);
+#1099=ADVANCED_FACE('',(#293),#254,.T.);
+#1100=ADVANCED_FACE('',(#294),#1061,.T.);
+#1101=ADVANCED_FACE('',(#295),#255,.T.);
+#1102=ADVANCED_FACE('',(#296),#1062,.T.);
+#1103=ADVANCED_FACE('',(#297),#1063,.T.);
+#1104=ADVANCED_FACE('',(#298),#256,.T.);
+#1105=ADVANCED_FACE('',(#299),#257,.T.);
+#1106=CLOSED_SHELL('',(#1064,#1065,#1066,#1067,#1068,#1069,#1070,#1071,
+#1072,#1073,#1074,#1075,#1076,#1077,#1078,#1079,#1080,#1081,#1082,#1083,
+#1084,#1085,#1086,#1087,#1088,#1089,#1090,#1091,#1092,#1093,#1094,#1095,
+#1096,#1097,#1098,#1099,#1100,#1101,#1102,#1103,#1104,#1105));
+#1107=DERIVED_UNIT_ELEMENT(#1109,1.);
+#1108=DERIVED_UNIT_ELEMENT(#2002,3.);
+#1109=(
+MASS_UNIT()
+NAMED_UNIT(*)
+SI_UNIT($,.GRAM.)
+);
+#1110=DERIVED_UNIT((#1107,#1108));
+#1111=MEASURE_REPRESENTATION_ITEM('density measure',
+POSITIVE_RATIO_MEASURE(1.),#1110);
+#1112=PROPERTY_DEFINITION_REPRESENTATION(#1117,#1114);
+#1113=PROPERTY_DEFINITION_REPRESENTATION(#1118,#1115);
+#1114=REPRESENTATION('material name',(#1116),#1999);
+#1115=REPRESENTATION('density',(#1111),#1999);
+#1116=DESCRIPTIVE_REPRESENTATION_ITEM('Generic','Generic');
+#1117=PROPERTY_DEFINITION('material property','material name',#2009);
+#1118=PROPERTY_DEFINITION('material property','density of part',#2009);
+#1119=DATE_TIME_ROLE('creation_date');
+#1120=APPLIED_DATE_AND_TIME_ASSIGNMENT(#1121,#1119,(#2009));
+#1121=DATE_AND_TIME(#1122,#1123);
+#1122=CALENDAR_DATE(2025,24,6);
+#1123=LOCAL_TIME(0,0,0.,#1124);
+#1124=COORDINATED_UNIVERSAL_TIME_OFFSET(0,0,.BEHIND.);
+#1125=AXIS2_PLACEMENT_3D('placement',#1553,#1241,#1242);
+#1126=AXIS2_PLACEMENT_3D('',#1554,#1243,#1244);
+#1127=AXIS2_PLACEMENT_3D('',#1557,#1245,#1246);
+#1128=AXIS2_PLACEMENT_3D('',#1561,#1248,#1249);
+#1129=AXIS2_PLACEMENT_3D('',#1563,#1251,#1252);
+#1130=AXIS2_PLACEMENT_3D('',#1565,#1253,#1254);
+#1131=AXIS2_PLACEMENT_3D('',#1568,#1256,#1257);
+#1132=AXIS2_PLACEMENT_3D('',#1569,#1258,#1259);
+#1133=AXIS2_PLACEMENT_3D('',#1572,#1260,#1261);
+#1134=AXIS2_PLACEMENT_3D('',#1576,#1263,#1264);
+#1135=AXIS2_PLACEMENT_3D('',#1578,#1266,#1267);
+#1136=AXIS2_PLACEMENT_3D('',#1580,#1268,#1269);
+#1137=AXIS2_PLACEMENT_3D('',#1583,#1271,#1272);
+#1138=AXIS2_PLACEMENT_3D('',#1584,#1273,#1274);
+#1139=AXIS2_PLACEMENT_3D('',#1587,#1275,#1276);
+#1140=AXIS2_PLACEMENT_3D('',#1591,#1278,#1279);
+#1141=AXIS2_PLACEMENT_3D('',#1593,#1281,#1282);
+#1142=AXIS2_PLACEMENT_3D('',#1595,#1283,#1284);
+#1143=AXIS2_PLACEMENT_3D('',#1598,#1286,#1287);
+#1144=AXIS2_PLACEMENT_3D('',#1599,#1288,#1289);
+#1145=AXIS2_PLACEMENT_3D('',#1601,#1290,#1291);
+#1146=AXIS2_PLACEMENT_3D('',#1603,#1292,#1293);
+#1147=AXIS2_PLACEMENT_3D('',#1605,#1295,#1296);
+#1148=AXIS2_PLACEMENT_3D('',#1608,#1297,#1298);
+#1149=AXIS2_PLACEMENT_3D('',#1612,#1300,#1301);
+#1150=AXIS2_PLACEMENT_3D('',#1614,#1303,#1304);
+#1151=AXIS2_PLACEMENT_3D('',#1616,#1305,#1306);
+#1152=AXIS2_PLACEMENT_3D('',#1619,#1308,#1309);
+#1153=AXIS2_PLACEMENT_3D('',#1620,#1310,#1311);
+#1154=AXIS2_PLACEMENT_3D('',#1622,#1312,#1313);
+#1155=AXIS2_PLACEMENT_3D('',#1624,#1314,#1315);
+#1156=AXIS2_PLACEMENT_3D('',#1626,#1317,#1318);
+#1157=AXIS2_PLACEMENT_3D('',#1635,#1323,#1324);
+#1158=AXIS2_PLACEMENT_3D('',#1644,#1329,#1330);
+#1159=AXIS2_PLACEMENT_3D('',#1647,#1331,#1332);
+#1160=AXIS2_PLACEMENT_3D('',#1651,#1334,#1335);
+#1161=AXIS2_PLACEMENT_3D('',#1655,#1337,#1338);
+#1162=AXIS2_PLACEMENT_3D('',#1659,#1340,#1341);
+#1163=AXIS2_PLACEMENT_3D('',#1663,#1343,#1344);
+#1164=AXIS2_PLACEMENT_3D('',#1664,#1345,#1346);
+#1165=AXIS2_PLACEMENT_3D('',#1667,#1347,#1348);
+#1166=AXIS2_PLACEMENT_3D('',#1668,#1349,#1350);
+#1167=AXIS2_PLACEMENT_3D('',#1671,#1351,#1352);
+#1168=AXIS2_PLACEMENT_3D('',#1672,#1353,#1354);
+#1169=AXIS2_PLACEMENT_3D('',#1675,#1355,#1356);
+#1170=AXIS2_PLACEMENT_3D('',#1676,#1357,#1358);
+#1171=AXIS2_PLACEMENT_3D('',#1693,#1368,#1369);
+#1172=AXIS2_PLACEMENT_3D('',#1699,#1373,#1374);
+#1173=AXIS2_PLACEMENT_3D('',#1703,#1377,#1378);
+#1174=AXIS2_PLACEMENT_3D('',#1707,#1381,#1382);
+#1175=AXIS2_PLACEMENT_3D('',#1711,#1385,#1386);
+#1176=AXIS2_PLACEMENT_3D('',#1715,#1388,#1389);
+#1177=AXIS2_PLACEMENT_3D('',#1716,#1390,#1391);
+#1178=AXIS2_PLACEMENT_3D('',#1717,#1392,#1393);
+#1179=AXIS2_PLACEMENT_3D('',#1721,#1395,#1396);
+#1180=AXIS2_PLACEMENT_3D('',#1722,#1397,#1398);
+#1181=AXIS2_PLACEMENT_3D('',#1723,#1399,#1400);
+#1182=AXIS2_PLACEMENT_3D('',#1727,#1402,#1403);
+#1183=AXIS2_PLACEMENT_3D('',#1728,#1404,#1405);
+#1184=AXIS2_PLACEMENT_3D('',#1729,#1406,#1407);
+#1185=AXIS2_PLACEMENT_3D('',#1733,#1409,#1410);
+#1186=AXIS2_PLACEMENT_3D('',#1734,#1411,#1412);
+#1187=AXIS2_PLACEMENT_3D('',#1735,#1413,#1414);
+#1188=AXIS2_PLACEMENT_3D('',#1737,#1416,#1417);
+#1189=AXIS2_PLACEMENT_3D('',#1739,#1419,#1420);
+#1190=AXIS2_PLACEMENT_3D('',#1741,#1422,#1423);
+#1191=AXIS2_PLACEMENT_3D('',#1744,#1424,#1425);
+#1192=AXIS2_PLACEMENT_3D('',#1748,#1427,#1428);
+#1193=AXIS2_PLACEMENT_3D('',#1752,#1430,#1431);
+#1194=AXIS2_PLACEMENT_3D('',#1756,#1433,#1434);
+#1195=AXIS2_PLACEMENT_3D('',#1763,#1438,#1439);
+#1196=AXIS2_PLACEMENT_3D('',#1768,#1442,#1443);
+#1197=AXIS2_PLACEMENT_3D('',#1777,#1449,#1450);
+#1198=AXIS2_PLACEMENT_3D('',#1780,#1453,#1454);
+#1199=AXIS2_PLACEMENT_3D('',#1782,#1456,#1457);
+#1200=AXIS2_PLACEMENT_3D('',#1785,#1460,#1461);
+#1201=AXIS2_PLACEMENT_3D('',#1787,#1463,#1464);
+#1202=AXIS2_PLACEMENT_3D('',#1789,#1466,#1467);
+#1203=AXIS2_PLACEMENT_3D('',#1790,#1468,#1469);
+#1204=AXIS2_PLACEMENT_3D('',#1792,#1471,#1472);
+#1205=AXIS2_PLACEMENT_3D('',#1793,#1473,#1474);
+#1206=AXIS2_PLACEMENT_3D('',#1794,#1475,#1476);
+#1207=AXIS2_PLACEMENT_3D('',#1795,#1477,#1478);
+#1208=AXIS2_PLACEMENT_3D('',#1796,#1479,#1480);
+#1209=AXIS2_PLACEMENT_3D('',#1799,#1483,#1484);
+#1210=AXIS2_PLACEMENT_3D('',#1801,#1486,#1487);
+#1211=AXIS2_PLACEMENT_3D('',#1804,#1490,#1491);
+#1212=AXIS2_PLACEMENT_3D('',#1806,#1493,#1494);
+#1213=AXIS2_PLACEMENT_3D('',#1808,#1496,#1497);
+#1214=AXIS2_PLACEMENT_3D('',#1810,#1499,#1500);
+#1215=AXIS2_PLACEMENT_3D('',#1811,#1501,#1502);
+#1216=AXIS2_PLACEMENT_3D('',#1874,#1503,#1504);
+#1217=AXIS2_PLACEMENT_3D('',#1875,#1505,#1506);
+#1218=AXIS2_PLACEMENT_3D('',#1876,#1507,#1508);
+#1219=AXIS2_PLACEMENT_3D('',#1877,#1509,#1510);
+#1220=AXIS2_PLACEMENT_3D('',#1878,#1511,#1512);
+#1221=AXIS2_PLACEMENT_3D('',#1881,#1513,#1514);
+#1222=AXIS2_PLACEMENT_3D('',#1884,#1515,#1516);
+#1223=AXIS2_PLACEMENT_3D('',#1887,#1517,#1518);
+#1224=AXIS2_PLACEMENT_3D('',#1890,#1519,#1520);
+#1225=AXIS2_PLACEMENT_3D('',#1891,#1521,#1522);
+#1226=AXIS2_PLACEMENT_3D('',#1892,#1523,#1524);
+#1227=AXIS2_PLACEMENT_3D('',#1893,#1525,#1526);
+#1228=AXIS2_PLACEMENT_3D('view reference',#1980,#1527,#1528);
+#1229=AXIS2_PLACEMENT_3D('view window',#1981,#1529,#1530);
+#1230=AXIS2_PLACEMENT_3D('view reference',#1983,#1531,#1532);
+#1231=AXIS2_PLACEMENT_3D('view window',#1984,#1533,#1534);
+#1232=AXIS2_PLACEMENT_3D('view reference',#1986,#1535,#1536);
+#1233=AXIS2_PLACEMENT_3D('view window',#1987,#1537,#1538);
+#1234=AXIS2_PLACEMENT_3D('view reference',#1989,#1539,#1540);
+#1235=AXIS2_PLACEMENT_3D('view window',#1990,#1541,#1542);
+#1236=AXIS2_PLACEMENT_3D('',#1992,#1543,#1544);
+#1237=AXIS2_PLACEMENT_3D('',#1993,#1545,#1546);
+#1238=AXIS2_PLACEMENT_3D('',#1994,#1547,#1548);
+#1239=AXIS2_PLACEMENT_3D('',#1995,#1549,#1550);
+#1240=AXIS2_PLACEMENT_3D('',#1996,#1551,#1552);
+#1241=DIRECTION('axis',(0.,0.,1.));
+#1242=DIRECTION('refdir',(1.,0.,0.));
+#1243=DIRECTION('center_axis',(0.,0.,1.));
+#1244=DIRECTION('ref_axis',(-0.789352217376327,-0.61394061351492,0.));
+#1245=DIRECTION('center_axis',(0.,0.,-1.));
+#1246=DIRECTION('ref_axis',(-0.789352217376327,-0.61394061351492,0.));
+#1247=DIRECTION('',(0.,0.,1.));
+#1248=DIRECTION('center_axis',(0.,0.,1.));
+#1249=DIRECTION('ref_axis',(-0.789352217376327,-0.61394061351492,0.));
+#1250=DIRECTION('',(0.,0.,-1.));
+#1251=DIRECTION('center_axis',(0.,0.,-1.));
+#1252=DIRECTION('ref_axis',(1.,0.,0.));
+#1253=DIRECTION('center_axis',(0.,0.,-1.));
+#1254=DIRECTION('ref_axis',(1.,0.,0.));
+#1255=DIRECTION('',(0.,0.,-1.));
+#1256=DIRECTION('center_axis',(0.,0.,1.));
+#1257=DIRECTION('ref_axis',(1.,0.,0.));
+#1258=DIRECTION('center_axis',(0.,0.,-1.));
+#1259=DIRECTION('ref_axis',(0.789352217376327,-0.61394061351492,0.));
+#1260=DIRECTION('center_axis',(0.,0.,1.));
+#1261=DIRECTION('ref_axis',(0.789352217376327,-0.61394061351492,0.));
+#1262=DIRECTION('',(0.,0.,-1.));
+#1263=DIRECTION('center_axis',(0.,0.,-1.));
+#1264=DIRECTION('ref_axis',(0.789352217376327,-0.61394061351492,0.));
+#1265=DIRECTION('',(0.,0.,1.));
+#1266=DIRECTION('center_axis',(0.,0.,-1.));
+#1267=DIRECTION('ref_axis',(-0.928748051907317,0.370711553742749,0.));
+#1268=DIRECTION('center_axis',(0.,0.,1.));
+#1269=DIRECTION('ref_axis',(1.,0.,0.));
+#1270=DIRECTION('',(0.,0.,1.));
+#1271=DIRECTION('center_axis',(0.,0.,-1.));
+#1272=DIRECTION('ref_axis',(1.,0.,0.));
+#1273=DIRECTION('center_axis',(0.,0.,-1.));
+#1274=DIRECTION('ref_axis',(0.613940613514918,0.789352217376328,0.));
+#1275=DIRECTION('center_axis',(0.,0.,1.));
+#1276=DIRECTION('ref_axis',(0.613940613514918,0.789352217376328,0.));
+#1277=DIRECTION('',(0.,0.,-1.));
+#1278=DIRECTION('center_axis',(0.,0.,-1.));
+#1279=DIRECTION('ref_axis',(0.613940613514918,0.789352217376328,0.));
+#1280=DIRECTION('',(0.,0.,1.));
+#1281=DIRECTION('center_axis',(0.,0.,-1.));
+#1282=DIRECTION('ref_axis',(-0.707106781186547,-0.707106781186548,0.));
+#1283=DIRECTION('center_axis',(0.,0.,1.));
+#1284=DIRECTION('ref_axis',(1.,0.,0.));
+#1285=DIRECTION('',(0.,0.,1.));
+#1286=DIRECTION('center_axis',(0.,0.,-1.));
+#1287=DIRECTION('ref_axis',(1.,0.,0.));
+#1288=DIRECTION('center_axis',(0.,0.,1.));
+#1289=DIRECTION('ref_axis',(0.789352217376322,0.613940613514925,0.));
+#1290=DIRECTION('center_axis',(0.,0.,-1.));
+#1291=DIRECTION('ref_axis',(0.789352217376322,0.613940613514925,0.));
+#1292=DIRECTION('center_axis',(0.,0.,1.));
+#1293=DIRECTION('ref_axis',(0.789352217376322,0.613940613514925,0.));
+#1294=DIRECTION('',(0.,0.,-1.));
+#1295=DIRECTION('center_axis',(0.,0.,-1.));
+#1296=DIRECTION('ref_axis',(-0.789352217376322,0.613940613514925,0.));
+#1297=DIRECTION('center_axis',(0.,0.,1.));
+#1298=DIRECTION('ref_axis',(-0.789352217376322,0.613940613514925,0.));
+#1299=DIRECTION('',(0.,0.,-1.));
+#1300=DIRECTION('center_axis',(0.,0.,-1.));
+#1301=DIRECTION('ref_axis',(-0.789352217376322,0.613940613514925,0.));
+#1302=DIRECTION('',(0.,0.,1.));
+#1303=DIRECTION('center_axis',(0.,0.,-1.));
+#1304=DIRECTION('ref_axis',(1.,0.,0.));
+#1305=DIRECTION('center_axis',(0.,0.,1.));
+#1306=DIRECTION('ref_axis',(1.,0.,0.));
+#1307=DIRECTION('',(0.,0.,1.));
+#1308=DIRECTION('center_axis',(0.,0.,-1.));
+#1309=DIRECTION('ref_axis',(1.,0.,0.));
+#1310=DIRECTION('center_axis',(0.,0.,1.));
+#1311=DIRECTION('ref_axis',(-0.613940613514923,0.789352217376325,0.));
+#1312=DIRECTION('center_axis',(0.,0.,-1.));
+#1313=DIRECTION('ref_axis',(-0.613940613514923,0.789352217376325,0.));
+#1314=DIRECTION('center_axis',(0.,0.,1.));
+#1315=DIRECTION('ref_axis',(-0.613940613514923,0.789352217376325,0.));
+#1316=DIRECTION('',(0.,0.,-1.));
+#1317=DIRECTION('center_axis',(-1.,0.,0.));
+#1318=DIRECTION('ref_axis',(0.,1.,0.));
+#1319=DIRECTION('',(0.,-1.,0.));
+#1320=DIRECTION('',(0.,0.,-1.));
+#1321=DIRECTION('',(0.,1.,0.));
+#1322=DIRECTION('',(0.,0.,-1.));
+#1323=DIRECTION('center_axis',(1.,0.,0.));
+#1324=DIRECTION('ref_axis',(0.,-1.,0.));
+#1325=DIRECTION('',(0.,1.,0.));
+#1326=DIRECTION('',(0.,0.,-1.));
+#1327=DIRECTION('',(0.,-1.,0.));
+#1328=DIRECTION('',(0.,0.,-1.));
+#1329=DIRECTION('center_axis',(0.,0.,1.));
+#1330=DIRECTION('ref_axis',(1.,0.,0.));
+#1331=DIRECTION('center_axis',(0.,0.,-1.));
+#1332=DIRECTION('ref_axis',(0.707106781186548,0.707106781186547,0.));
+#1333=DIRECTION('',(-1.,0.,0.));
+#1334=DIRECTION('center_axis',(0.,0.,-1.));
+#1335=DIRECTION('ref_axis',(-0.707106781186547,0.707106781186547,0.));
+#1336=DIRECTION('',(3.35161667811368E-16,-1.,0.));
+#1337=DIRECTION('center_axis',(0.,0.,-1.));
+#1338=DIRECTION('ref_axis',(-0.707106781186548,-0.707106781186547,0.));
+#1339=DIRECTION('',(1.,9.38216640528301E-17,0.));
+#1340=DIRECTION('center_axis',(0.,0.,-1.));
+#1341=DIRECTION('ref_axis',(0.707106781186547,-0.707106781186547,0.));
+#1342=DIRECTION('',(-1.67580833905684E-16,1.,0.));
+#1343=DIRECTION('center_axis',(0.,0.,-1.));
+#1344=DIRECTION('ref_axis',(1.,0.,0.));
+#1345=DIRECTION('center_axis',(0.,0.,-1.));
+#1346=DIRECTION('ref_axis',(1.,0.,0.));
+#1347=DIRECTION('center_axis',(0.,0.,-1.));
+#1348=DIRECTION('ref_axis',(1.,0.,0.));
+#1349=DIRECTION('center_axis',(0.,0.,-1.));
+#1350=DIRECTION('ref_axis',(1.,0.,0.));
+#1351=DIRECTION('center_axis',(0.,0.,-1.));
+#1352=DIRECTION('ref_axis',(1.,0.,0.));
+#1353=DIRECTION('center_axis',(0.,0.,-1.));
+#1354=DIRECTION('ref_axis',(1.,0.,0.));
+#1355=DIRECTION('center_axis',(0.,0.,-1.));
+#1356=DIRECTION('ref_axis',(1.,0.,0.));
+#1357=DIRECTION('center_axis',(0.,0.,-1.));
+#1358=DIRECTION('ref_axis',(1.,0.,0.));
+#1359=DIRECTION('',(1.,0.,0.));
+#1360=DIRECTION('',(-1.,-7.40148683083438E-16,0.));
+#1361=DIRECTION('',(0.,-1.,0.));
+#1362=DIRECTION('',(-1.,-1.29472072842584E-16,0.));
+#1363=DIRECTION('',(0.,1.,0.));
+#1364=DIRECTION('',(-1.,-1.30231439838728E-16,0.));
+#1365=DIRECTION('',(1.,0.,0.));
+#1366=DIRECTION('',(0.,1.,0.));
+#1367=DIRECTION('',(-1.,0.,0.));
+#1368=DIRECTION('center_axis',(0.,0.,1.));
+#1369=DIRECTION('ref_axis',(-0.707106781186546,-0.707106781186549,0.));
+#1370=DIRECTION('',(-1.84269381680524E-16,1.,0.));
+#1371=DIRECTION('',(1.,0.,0.));
+#1372=DIRECTION('',(0.,-1.,0.));
+#1373=DIRECTION('center_axis',(0.,0.,1.));
+#1374=DIRECTION('ref_axis',(0.707106781186549,-0.707106781186546,0.));
+#1375=DIRECTION('',(-1.,0.,0.));
+#1376=DIRECTION('',(0.,-1.,0.));
+#1377=DIRECTION('center_axis',(0.,-1.,0.));
+#1378=DIRECTION('ref_axis',(-1.,0.,0.));
+#1379=DIRECTION('',(0.,0.,-1.));
+#1380=DIRECTION('',(-1.,0.,0.));
+#1381=DIRECTION('center_axis',(0.,1.,0.));
+#1382=DIRECTION('ref_axis',(1.,0.,0.));
+#1383=DIRECTION('',(0.,0.,-1.));
+#1384=DIRECTION('',(1.,0.,0.));
+#1385=DIRECTION('center_axis',(0.,0.,-1.));
+#1386=DIRECTION('ref_axis',(1.,0.,0.));
+#1387=DIRECTION('',(0.,0.,-1.));
+#1388=DIRECTION('center_axis',(0.,0.,1.));
+#1389=DIRECTION('ref_axis',(1.,0.,0.));
+#1390=DIRECTION('center_axis',(0.,0.,1.));
+#1391=DIRECTION('ref_axis',(1.,0.,0.));
+#1392=DIRECTION('center_axis',(0.,0.,-1.));
+#1393=DIRECTION('ref_axis',(1.,0.,0.));
+#1394=DIRECTION('',(0.,0.,-1.));
+#1395=DIRECTION('center_axis',(0.,0.,1.));
+#1396=DIRECTION('ref_axis',(1.,0.,0.));
+#1397=DIRECTION('center_axis',(0.,0.,1.));
+#1398=DIRECTION('ref_axis',(1.,0.,0.));
+#1399=DIRECTION('center_axis',(0.,0.,-1.));
+#1400=DIRECTION('ref_axis',(1.,0.,0.));
+#1401=DIRECTION('',(0.,0.,-1.));
+#1402=DIRECTION('center_axis',(0.,0.,1.));
+#1403=DIRECTION('ref_axis',(1.,0.,0.));
+#1404=DIRECTION('center_axis',(0.,0.,1.));
+#1405=DIRECTION('ref_axis',(1.,0.,0.));
+#1406=DIRECTION('center_axis',(0.,0.,-1.));
+#1407=DIRECTION('ref_axis',(1.,0.,0.));
+#1408=DIRECTION('',(0.,0.,-1.));
+#1409=DIRECTION('center_axis',(0.,0.,1.));
+#1410=DIRECTION('ref_axis',(1.,0.,0.));
+#1411=DIRECTION('center_axis',(0.,0.,1.));
+#1412=DIRECTION('ref_axis',(1.,0.,0.));
+#1413=DIRECTION('center_axis',(1.,0.,0.));
+#1414=DIRECTION('ref_axis',(0.,-1.,0.));
+#1415=DIRECTION('',(0.,-1.,0.));
+#1416=DIRECTION('center_axis',(-1.29472072842584E-16,1.,0.));
+#1417=DIRECTION('ref_axis',(-1.,-1.29472072842584E-16,0.));
+#1418=DIRECTION('',(-1.,-1.29472072842584E-16,0.));
+#1419=DIRECTION('center_axis',(0.,-1.,0.));
+#1420=DIRECTION('ref_axis',(1.,0.,0.));
+#1421=DIRECTION('',(1.,0.,0.));
+#1422=DIRECTION('center_axis',(0.,0.,1.));
+#1423=DIRECTION('ref_axis',(1.,0.,0.));
+#1424=DIRECTION('center_axis',(0.,0.,1.));
+#1425=DIRECTION('ref_axis',(0.707106781186548,0.707106781186547,0.));
+#1426=DIRECTION('',(-1.67580833905684E-16,1.,0.));
+#1427=DIRECTION('center_axis',(0.,0.,1.));
+#1428=DIRECTION('ref_axis',(0.707106781186547,-0.707106781186547,0.));
+#1429=DIRECTION('',(1.,9.38216640528301E-17,0.));
+#1430=DIRECTION('center_axis',(0.,0.,1.));
+#1431=DIRECTION('ref_axis',(-0.707106781186548,-0.707106781186547,0.));
+#1432=DIRECTION('',(3.35161667811368E-16,-1.,0.));
+#1433=DIRECTION('center_axis',(0.,0.,1.));
+#1434=DIRECTION('ref_axis',(-0.707106781186547,0.707106781186547,0.));
+#1435=DIRECTION('',(-1.,0.,0.));
+#1436=DIRECTION('',(0.,1.,0.));
+#1437=DIRECTION('',(1.,0.,0.));
+#1438=DIRECTION('center_axis',(0.,0.,-1.));
+#1439=DIRECTION('ref_axis',(0.707106781186549,-0.707106781186546,0.));
+#1440=DIRECTION('',(0.,-1.,0.));
+#1441=DIRECTION('',(-1.84269381680524E-16,1.,0.));
+#1442=DIRECTION('center_axis',(0.,0.,-1.));
+#1443=DIRECTION('ref_axis',(-0.707106781186546,-0.707106781186549,0.));
+#1444=DIRECTION('',(1.,0.,0.));
+#1445=DIRECTION('',(0.,-1.,0.));
+#1446=DIRECTION('',(-1.,0.,0.));
+#1447=DIRECTION('',(0.,1.,0.));
+#1448=DIRECTION('',(1.,1.30231439838728E-16,0.));
+#1449=DIRECTION('center_axis',(0.,0.,1.));
+#1450=DIRECTION('ref_axis',(0.707106781186549,-0.707106781186546,0.));
+#1451=DIRECTION('',(0.,0.,1.));
+#1452=DIRECTION('',(0.,0.,-1.));
+#1453=DIRECTION('center_axis',(0.,1.,0.));
+#1454=DIRECTION('ref_axis',(1.,0.,0.));
+#1455=DIRECTION('',(0.,0.,-1.));
+#1456=DIRECTION('center_axis',(0.,0.,-1.));
+#1457=DIRECTION('ref_axis',(-0.707106781186546,-0.707106781186549,0.));
+#1458=DIRECTION('',(0.,0.,-1.));
+#1459=DIRECTION('',(0.,0.,1.));
+#1460=DIRECTION('center_axis',(0.,1.,0.));
+#1461=DIRECTION('ref_axis',(1.,0.,0.));
+#1462=DIRECTION('',(0.,0.,-1.));
+#1463=DIRECTION('center_axis',(-7.40148683083438E-16,1.,0.));
+#1464=DIRECTION('ref_axis',(1.,7.40148683083438E-16,0.));
+#1465=DIRECTION('',(0.,0.,-1.));
+#1466=DIRECTION('center_axis',(-1.,0.,0.));
+#1467=DIRECTION('ref_axis',(0.,1.,0.));
+#1468=DIRECTION('center_axis',(0.,-1.,0.));
+#1469=DIRECTION('ref_axis',(-1.,0.,0.));
+#1470=DIRECTION('',(0.,0.,-1.));
+#1471=DIRECTION('center_axis',(1.,0.,0.));
+#1472=DIRECTION('ref_axis',(0.,-1.,0.));
+#1473=DIRECTION('center_axis',(-1.,0.,0.));
+#1474=DIRECTION('ref_axis',(0.,1.,0.));
+#1475=DIRECTION('center_axis',(-1.,0.,0.));
+#1476=DIRECTION('ref_axis',(0.,-1.,0.));
+#1477=DIRECTION('center_axis',(1.,1.84269381680524E-16,0.));
+#1478=DIRECTION('ref_axis',(-1.84269381680524E-16,1.,0.));
+#1479=DIRECTION('center_axis',(0.,0.,1.));
+#1480=DIRECTION('ref_axis',(0.707106781186548,0.707106781186547,0.));
+#1481=DIRECTION('',(0.,0.,-1.));
+#1482=DIRECTION('',(0.,0.,1.));
+#1483=DIRECTION('center_axis',(0.,1.,0.));
+#1484=DIRECTION('ref_axis',(-1.,0.,0.));
+#1485=DIRECTION('',(0.,0.,-1.));
+#1486=DIRECTION('center_axis',(0.,0.,1.));
+#1487=DIRECTION('ref_axis',(0.707106781186547,-0.707106781186547,0.));
+#1488=DIRECTION('',(0.,0.,-1.));
+#1489=DIRECTION('',(0.,0.,1.));
+#1490=DIRECTION('center_axis',(9.38216640528301E-17,-1.,0.));
+#1491=DIRECTION('ref_axis',(1.,9.38216640528301E-17,0.));
+#1492=DIRECTION('',(0.,0.,1.));
+#1493=DIRECTION('center_axis',(0.,0.,1.));
+#1494=DIRECTION('ref_axis',(-0.707106781186548,-0.707106781186547,0.));
+#1495=DIRECTION('',(0.,0.,-1.));
+#1496=DIRECTION('center_axis',(0.,0.,1.));
+#1497=DIRECTION('ref_axis',(-0.707106781186547,0.707106781186547,0.));
+#1498=DIRECTION('',(0.,0.,1.));
+#1499=DIRECTION('center_axis',(-1.,-3.35161667811368E-16,0.));
+#1500=DIRECTION('ref_axis',(3.35161667811368E-16,-1.,0.));
+#1501=DIRECTION('center_axis',(1.,1.67580833905684E-16,0.));
+#1502=DIRECTION('ref_axis',(-1.67580833905684E-16,1.,0.));
+#1503=DIRECTION('center_axis',(0.,0.,1.));
+#1504=DIRECTION('ref_axis',(1.,0.,0.));
+#1505=DIRECTION('center_axis',(0.,0.,1.));
+#1506=DIRECTION('ref_axis',(1.,0.,0.));
+#1507=DIRECTION('center_axis',(0.,0.,1.));
+#1508=DIRECTION('ref_axis',(1.,0.,0.));
+#1509=DIRECTION('center_axis',(0.,0.,1.));
+#1510=DIRECTION('ref_axis',(1.,0.,0.));
+#1511=DIRECTION('center_axis',(0.,0.,1.));
+#1512=DIRECTION('ref_axis',(1.,0.,0.));
+#1513=DIRECTION('center_axis',(0.,0.,1.));
+#1514=DIRECTION('ref_axis',(1.,0.,0.));
+#1515=DIRECTION('center_axis',(0.,0.,1.));
+#1516=DIRECTION('ref_axis',(1.,0.,0.));
+#1517=DIRECTION('center_axis',(0.,0.,1.));
+#1518=DIRECTION('ref_axis',(1.,0.,0.));
+#1519=DIRECTION('center_axis',(0.,0.,1.));
+#1520=DIRECTION('ref_axis',(1.,0.,0.));
+#1521=DIRECTION('center_axis',(0.,0.,1.));
+#1522=DIRECTION('ref_axis',(1.,0.,0.));
+#1523=DIRECTION('center_axis',(0.,0.,1.));
+#1524=DIRECTION('ref_axis',(1.,0.,0.));
+#1525=DIRECTION('center_axis',(0.,0.,1.));
+#1526=DIRECTION('ref_axis',(1.,0.,0.));
+#1527=DIRECTION('center_axis',(-0.577350269189626,0.577350269189626,-0.577350269189626));
+#1528=DIRECTION('ref_axis',(-0.707106781186548,-0.707106781186548,0.));
+#1529=DIRECTION('center_axis',(0.,0.,1.));
+#1530=DIRECTION('ref_axis',(1.,0.,0.));
+#1531=DIRECTION('center_axis',(-2.22044604925031E-16,0.,-1.));
+#1532=DIRECTION('ref_axis',(-1.,0.,2.22044604925031E-16));
+#1533=DIRECTION('center_axis',(0.,0.,1.));
+#1534=DIRECTION('ref_axis',(1.,0.,0.));
+#1535=DIRECTION('center_axis',(0.,-1.,0.));
+#1536=DIRECTION('ref_axis',(-1.,0.,0.));
+#1537=DIRECTION('center_axis',(0.,0.,1.));
+#1538=DIRECTION('ref_axis',(1.,0.,0.));
+#1539=DIRECTION('center_axis',(-1.,0.,0.));
+#1540=DIRECTION('ref_axis',(0.,0.,1.));
+#1541=DIRECTION('center_axis',(0.,0.,1.));
+#1542=DIRECTION('ref_axis',(1.,0.,0.));
+#1543=DIRECTION('center_axis',(0.,0.,1.));
+#1544=DIRECTION('ref_axis',(1.,0.,0.));
+#1545=DIRECTION('center_axis',(0.,0.,1.));
+#1546=DIRECTION('ref_axis',(1.,0.,0.));
+#1547=DIRECTION('center_axis',(0.,0.,1.));
+#1548=DIRECTION('ref_axis',(1.,0.,0.));
+#1549=DIRECTION('center_axis',(0.,0.,1.));
+#1550=DIRECTION('ref_axis',(1.,0.,0.));
+#1551=DIRECTION('center_axis',(0.,0.,1.));
+#1552=DIRECTION('ref_axis',(1.,0.,0.));
+#1553=CARTESIAN_POINT('',(0.,0.,0.));
+#1554=CARTESIAN_POINT('Origin',(-29.35,-11.05,100.));
+#1555=CARTESIAN_POINT('',(-29.35,-12.05,0.));
+#1556=CARTESIAN_POINT('',(-30.3192307692308,-10.8038461538462,0.));
+#1557=CARTESIAN_POINT('Origin',(-29.35,-11.05,0.));
+#1558=CARTESIAN_POINT('',(-30.3192307692308,-10.8038461538462,100.));
+#1559=CARTESIAN_POINT('',(-30.3192307692308,-10.8038461538462,100.));
+#1560=CARTESIAN_POINT('',(-29.35,-12.05,100.));
+#1561=CARTESIAN_POINT('Origin',(-29.35,-11.05,100.));
+#1562=CARTESIAN_POINT('',(-29.35,-12.05,100.));
+#1563=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1564=CARTESIAN_POINT('',(-31.3,-8.34671336893257,0.));
+#1565=CARTESIAN_POINT('Origin',(-32.5,-10.25,0.));
+#1566=CARTESIAN_POINT('',(-31.3,-8.34671336893257,100.));
+#1567=CARTESIAN_POINT('',(-31.3,-8.34671336893257,100.));
+#1568=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1569=CARTESIAN_POINT('Origin',(29.35,-11.05,100.));
+#1570=CARTESIAN_POINT('',(29.35,-12.05,100.));
+#1571=CARTESIAN_POINT('',(30.3192307692308,-10.8038461538461,100.));
+#1572=CARTESIAN_POINT('Origin',(29.35,-11.05,100.));
+#1573=CARTESIAN_POINT('',(30.3192307692308,-10.8038461538461,0.));
+#1574=CARTESIAN_POINT('',(30.3192307692308,-10.8038461538461,100.));
+#1575=CARTESIAN_POINT('',(29.35,-12.05,0.));
+#1576=CARTESIAN_POINT('Origin',(29.35,-11.05,0.));
+#1577=CARTESIAN_POINT('',(29.35,-12.05,100.));
+#1578=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1579=CARTESIAN_POINT('',(31.3,-8.34671336893257,100.));
+#1580=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1581=CARTESIAN_POINT('',(31.3,-8.34671336893257,0.));
+#1582=CARTESIAN_POINT('',(31.3,-8.34671336893257,100.));
+#1583=CARTESIAN_POINT('Origin',(32.5,-10.25,0.));
+#1584=CARTESIAN_POINT('Origin',(33.3,7.1,100.));
+#1585=CARTESIAN_POINT('',(34.3,7.1,100.));
+#1586=CARTESIAN_POINT('',(33.0538461538462,8.06923076923077,100.));
+#1587=CARTESIAN_POINT('Origin',(33.3,7.1,100.));
+#1588=CARTESIAN_POINT('',(33.0538461538462,8.06923076923077,0.));
+#1589=CARTESIAN_POINT('',(33.0538461538462,8.06923076923077,100.));
+#1590=CARTESIAN_POINT('',(34.3,7.1,0.));
+#1591=CARTESIAN_POINT('Origin',(33.3,7.1,0.));
+#1592=CARTESIAN_POINT('',(34.3,7.1,100.));
+#1593=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1594=CARTESIAN_POINT('',(30.3192307692308,10.8038461538462,100.));
+#1595=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1596=CARTESIAN_POINT('',(30.3192307692308,10.8038461538462,0.));
+#1597=CARTESIAN_POINT('',(30.3192307692308,10.8038461538462,100.));
+#1598=CARTESIAN_POINT('Origin',(32.5,10.25,0.));
+#1599=CARTESIAN_POINT('Origin',(29.35,11.05,100.));
+#1600=CARTESIAN_POINT('',(29.35,12.05,0.));
+#1601=CARTESIAN_POINT('Origin',(29.35,11.05,0.));
+#1602=CARTESIAN_POINT('',(29.35,12.05,100.));
+#1603=CARTESIAN_POINT('Origin',(29.35,11.05,100.));
+#1604=CARTESIAN_POINT('',(29.35,12.05,100.));
+#1605=CARTESIAN_POINT('Origin',(-29.35,11.05,100.));
+#1606=CARTESIAN_POINT('',(-29.35,12.05,100.));
+#1607=CARTESIAN_POINT('',(-30.3192307692308,10.8038461538462,100.));
+#1608=CARTESIAN_POINT('Origin',(-29.35,11.05,100.));
+#1609=CARTESIAN_POINT('',(-30.3192307692308,10.8038461538462,0.));
+#1610=CARTESIAN_POINT('',(-30.3192307692308,10.8038461538462,100.));
+#1611=CARTESIAN_POINT('',(-29.35,12.05,0.));
+#1612=CARTESIAN_POINT('Origin',(-29.35,11.05,0.));
+#1613=CARTESIAN_POINT('',(-29.35,12.05,100.));
+#1614=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1615=CARTESIAN_POINT('',(-33.0538461538462,8.06923076923077,100.));
+#1616=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1617=CARTESIAN_POINT('',(-33.0538461538462,8.06923076923077,0.));
+#1618=CARTESIAN_POINT('',(-33.0538461538462,8.06923076923077,100.));
+#1619=CARTESIAN_POINT('Origin',(-32.5,10.25,0.));
+#1620=CARTESIAN_POINT('Origin',(-33.3,7.1,100.));
+#1621=CARTESIAN_POINT('',(-34.3,7.1,0.));
+#1622=CARTESIAN_POINT('Origin',(-33.3,7.1,0.));
+#1623=CARTESIAN_POINT('',(-34.3,7.1,100.));
+#1624=CARTESIAN_POINT('Origin',(-33.3,7.1,100.));
+#1625=CARTESIAN_POINT('',(-34.3,7.1,100.));
+#1626=CARTESIAN_POINT('Origin',(-34.1,-7.90000000000001,100.));
+#1627=CARTESIAN_POINT('',(-34.1,-5.9,0.));
+#1628=CARTESIAN_POINT('',(-34.1,-7.90000000000001,0.));
+#1629=CARTESIAN_POINT('',(-34.1,-3.95,0.));
+#1630=CARTESIAN_POINT('',(-34.1,-5.9,100.));
+#1631=CARTESIAN_POINT('',(-34.1,-5.9,100.));
+#1632=CARTESIAN_POINT('',(-34.1,-7.90000000000001,100.));
+#1633=CARTESIAN_POINT('',(-34.1,-3.95,100.));
+#1634=CARTESIAN_POINT('',(-34.1,-7.90000000000001,100.));
+#1635=CARTESIAN_POINT('Origin',(34.1,-5.9,100.));
+#1636=CARTESIAN_POINT('',(34.1,-7.9,0.));
+#1637=CARTESIAN_POINT('',(34.1,-5.9,0.));
+#1638=CARTESIAN_POINT('',(34.1,-2.95,0.));
+#1639=CARTESIAN_POINT('',(34.1,-7.9,100.));
+#1640=CARTESIAN_POINT('',(34.1,-7.9,100.));
+#1641=CARTESIAN_POINT('',(34.1,-5.9,100.));
+#1642=CARTESIAN_POINT('',(34.1,-2.95,100.));
+#1643=CARTESIAN_POINT('',(34.1,-5.9,100.));
+#1644=CARTESIAN_POINT('Origin',(0.,0.,100.));
+#1645=CARTESIAN_POINT('',(32.25,13.25,100.));
+#1646=CARTESIAN_POINT('',(35.5,10.,100.));
+#1647=CARTESIAN_POINT('Origin',(32.25,10.,100.));
+#1648=CARTESIAN_POINT('',(-32.25,13.25,100.));
+#1649=CARTESIAN_POINT('',(35.5,13.25,100.));
+#1650=CARTESIAN_POINT('',(-35.5,10.,100.));
+#1651=CARTESIAN_POINT('Origin',(-32.25,10.,100.));
+#1652=CARTESIAN_POINT('',(-35.5,-10.,100.));
+#1653=CARTESIAN_POINT('',(-35.5,13.25,100.));
+#1654=CARTESIAN_POINT('',(-32.25,-13.25,100.));
+#1655=CARTESIAN_POINT('Origin',(-32.25,-10.,100.));
+#1656=CARTESIAN_POINT('',(32.25,-13.25,100.));
+#1657=CARTESIAN_POINT('',(-35.5,-13.25,100.));
+#1658=CARTESIAN_POINT('',(35.5,-10.,100.));
+#1659=CARTESIAN_POINT('Origin',(32.25,-10.,100.));
+#1660=CARTESIAN_POINT('',(35.5,-13.25,100.));
+#1661=CARTESIAN_POINT('',(33.75,-10.25,100.));
+#1662=CARTESIAN_POINT('',(31.25,-10.25,100.));
+#1663=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1664=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1665=CARTESIAN_POINT('',(33.75,10.25,100.));
+#1666=CARTESIAN_POINT('',(31.25,10.25,100.));
+#1667=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1668=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1669=CARTESIAN_POINT('',(-31.25,10.25,100.));
+#1670=CARTESIAN_POINT('',(-33.75,10.25,100.));
+#1671=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1672=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1673=CARTESIAN_POINT('',(-31.25,-10.25,100.));
+#1674=CARTESIAN_POINT('',(-33.75,-10.25,100.));
+#1675=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1676=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1677=CARTESIAN_POINT('',(31.3,-5.9,100.));
+#1678=CARTESIAN_POINT('',(-17.05,-5.9,100.));
+#1679=CARTESIAN_POINT('',(31.3,-7.9,100.));
+#1680=CARTESIAN_POINT('',(34.3,-7.9,100.));
+#1681=CARTESIAN_POINT('',(31.3,-7.9,100.));
+#1682=CARTESIAN_POINT('',(34.3,-12.05,100.));
+#1683=CARTESIAN_POINT('',(-31.3,-7.9,100.));
+#1684=CARTESIAN_POINT('',(-31.3,-9.4,100.));
+#1685=CARTESIAN_POINT('',(17.05,-7.9,100.));
+#1686=CARTESIAN_POINT('',(-31.3,-5.9,100.));
+#1687=CARTESIAN_POINT('',(-34.3,-5.9,100.));
+#1688=CARTESIAN_POINT('',(-31.3,-4.4,100.));
+#1689=CARTESIAN_POINT('',(-31.3,-5.9,100.));
+#1690=CARTESIAN_POINT('',(-33.3,-4.4,100.));
+#1691=CARTESIAN_POINT('',(-31.3,-4.4,100.));
+#1692=CARTESIAN_POINT('',(-34.3,-3.4,100.));
+#1693=CARTESIAN_POINT('Origin',(-33.3,-3.4,100.));
+#1694=CARTESIAN_POINT('',(-34.3,-12.05,100.));
+#1695=CARTESIAN_POINT('',(-34.3,12.05,100.));
+#1696=CARTESIAN_POINT('',(34.3,-3.39999999999999,100.));
+#1697=CARTESIAN_POINT('',(34.3,12.05,100.));
+#1698=CARTESIAN_POINT('',(33.3,-4.39999999999999,100.));
+#1699=CARTESIAN_POINT('Origin',(33.3,-3.39999999999999,100.));
+#1700=CARTESIAN_POINT('',(31.3,-4.39999999999999,100.));
+#1701=CARTESIAN_POINT('',(34.3,-4.39999999999999,100.));
+#1702=CARTESIAN_POINT('',(31.3,-4.39999999999999,100.));
+#1703=CARTESIAN_POINT('Origin',(34.3,-5.9,100.));
+#1704=CARTESIAN_POINT('',(31.3,-5.9,0.));
+#1705=CARTESIAN_POINT('',(31.3,-5.9,100.));
+#1706=CARTESIAN_POINT('',(31.3,-5.9,0.));
+#1707=CARTESIAN_POINT('Origin',(-34.3,-7.9,100.));
+#1708=CARTESIAN_POINT('',(-31.3,-7.9,0.));
+#1709=CARTESIAN_POINT('',(-31.3,-7.9,100.));
+#1710=CARTESIAN_POINT('',(-31.3,-7.9,0.));
+#1711=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1712=CARTESIAN_POINT('',(-33.75,-10.25,0.));
+#1713=CARTESIAN_POINT('',(-33.75,-10.25,100.));
+#1714=CARTESIAN_POINT('',(-31.25,-10.25,0.));
+#1715=CARTESIAN_POINT('Origin',(-32.5,-10.25,0.));
+#1716=CARTESIAN_POINT('Origin',(-32.5,-10.25,0.));
+#1717=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1718=CARTESIAN_POINT('',(-33.75,10.25,0.));
+#1719=CARTESIAN_POINT('',(-33.75,10.25,100.));
+#1720=CARTESIAN_POINT('',(-31.25,10.25,0.));
+#1721=CARTESIAN_POINT('Origin',(-32.5,10.25,0.));
+#1722=CARTESIAN_POINT('Origin',(-32.5,10.25,0.));
+#1723=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1724=CARTESIAN_POINT('',(31.25,10.25,0.));
+#1725=CARTESIAN_POINT('',(31.25,10.25,100.));
+#1726=CARTESIAN_POINT('',(33.75,10.25,0.));
+#1727=CARTESIAN_POINT('Origin',(32.5,10.25,0.));
+#1728=CARTESIAN_POINT('Origin',(32.5,10.25,0.));
+#1729=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1730=CARTESIAN_POINT('',(31.25,-10.25,0.));
+#1731=CARTESIAN_POINT('',(31.25,-10.25,100.));
+#1732=CARTESIAN_POINT('',(33.75,-10.25,0.));
+#1733=CARTESIAN_POINT('Origin',(32.5,-10.25,0.));
+#1734=CARTESIAN_POINT('Origin',(32.5,-10.25,0.));
+#1735=CARTESIAN_POINT('Origin',(-31.3,-7.9,100.));
+#1736=CARTESIAN_POINT('',(-31.3,-9.4,0.));
+#1737=CARTESIAN_POINT('Origin',(34.3,-12.05,0.));
+#1738=CARTESIAN_POINT('',(34.3,-12.05,0.));
+#1739=CARTESIAN_POINT('Origin',(-34.3,12.05,0.));
+#1740=CARTESIAN_POINT('',(-34.3,12.05,0.));
+#1741=CARTESIAN_POINT('Origin',(-2.22044604925031E-15,0.,0.));
+#1742=CARTESIAN_POINT('',(35.5,10.,0.));
+#1743=CARTESIAN_POINT('',(32.25,13.25,0.));
+#1744=CARTESIAN_POINT('Origin',(32.25,10.,0.));
+#1745=CARTESIAN_POINT('',(35.5,-10.,0.));
+#1746=CARTESIAN_POINT('',(35.5,-13.25,0.));
+#1747=CARTESIAN_POINT('',(32.25,-13.25,0.));
+#1748=CARTESIAN_POINT('Origin',(32.25,-10.,0.));
+#1749=CARTESIAN_POINT('',(-32.25,-13.25,0.));
+#1750=CARTESIAN_POINT('',(-35.5,-13.25,0.));
+#1751=CARTESIAN_POINT('',(-35.5,-10.,0.));
+#1752=CARTESIAN_POINT('Origin',(-32.25,-10.,0.));
+#1753=CARTESIAN_POINT('',(-35.5,10.,0.));
+#1754=CARTESIAN_POINT('',(-35.5,13.25,0.));
+#1755=CARTESIAN_POINT('',(-32.25,13.25,0.));
+#1756=CARTESIAN_POINT('Origin',(-32.25,10.,0.));
+#1757=CARTESIAN_POINT('',(35.5,13.25,0.));
+#1758=CARTESIAN_POINT('',(31.3,-4.39999999999999,0.));
+#1759=CARTESIAN_POINT('',(31.3,-4.39999999999999,0.));
+#1760=CARTESIAN_POINT('',(33.3,-4.39999999999999,0.));
+#1761=CARTESIAN_POINT('',(34.3,-4.39999999999999,0.));
+#1762=CARTESIAN_POINT('',(34.3,-3.39999999999999,0.));
+#1763=CARTESIAN_POINT('Origin',(33.3,-3.39999999999999,0.));
+#1764=CARTESIAN_POINT('',(34.3,12.05,0.));
+#1765=CARTESIAN_POINT('',(-34.3,-3.4,0.));
+#1766=CARTESIAN_POINT('',(-34.3,-12.05,0.));
+#1767=CARTESIAN_POINT('',(-33.3,-4.4,0.));
+#1768=CARTESIAN_POINT('Origin',(-33.3,-3.4,0.));
+#1769=CARTESIAN_POINT('',(-31.3,-4.4,0.));
+#1770=CARTESIAN_POINT('',(-31.3,-4.4,0.));
+#1771=CARTESIAN_POINT('',(-31.3,-5.9,0.));
+#1772=CARTESIAN_POINT('',(-31.3,-5.9,0.));
+#1773=CARTESIAN_POINT('',(-17.05,-5.9,0.));
+#1774=CARTESIAN_POINT('',(31.3,-7.9,0.));
+#1775=CARTESIAN_POINT('',(31.3,-7.9,0.));
+#1776=CARTESIAN_POINT('',(17.05,-7.9,0.));
+#1777=CARTESIAN_POINT('Origin',(33.3,-3.39999999999999,50.));
+#1778=CARTESIAN_POINT('',(33.3,-4.39999999999999,50.));
+#1779=CARTESIAN_POINT('',(34.3,-3.39999999999999,50.));
+#1780=CARTESIAN_POINT('Origin',(31.3,-4.39999999999999,100.));
+#1781=CARTESIAN_POINT('',(31.3,-4.39999999999999,100.));
+#1782=CARTESIAN_POINT('Origin',(-33.3,-3.4,50.));
+#1783=CARTESIAN_POINT('',(-33.3,-4.4,50.));
+#1784=CARTESIAN_POINT('',(-34.3,-3.4,50.));
+#1785=CARTESIAN_POINT('Origin',(-34.3,-4.4,100.));
+#1786=CARTESIAN_POINT('',(-31.3,-4.4,100.));
+#1787=CARTESIAN_POINT('Origin',(31.3,-7.9,100.));
+#1788=CARTESIAN_POINT('',(31.3,-7.9,100.));
+#1789=CARTESIAN_POINT('Origin',(31.3,-9.39999999999999,100.));
+#1790=CARTESIAN_POINT('Origin',(-31.3,-5.9,100.));
+#1791=CARTESIAN_POINT('',(-31.3,-5.9,100.));
+#1792=CARTESIAN_POINT('Origin',(-31.3,-4.4,100.));
+#1793=CARTESIAN_POINT('Origin',(31.3,-5.9,100.));
+#1794=CARTESIAN_POINT('Origin',(34.3,12.05,0.));
+#1795=CARTESIAN_POINT('Origin',(-34.3,-12.05,0.));
+#1796=CARTESIAN_POINT('Origin',(32.25,10.,0.));
+#1797=CARTESIAN_POINT('',(35.5,10.,0.));
+#1798=CARTESIAN_POINT('',(32.25,13.25,0.));
+#1799=CARTESIAN_POINT('Origin',(35.5,13.25,0.));
+#1800=CARTESIAN_POINT('',(-32.25,13.25,0.));
+#1801=CARTESIAN_POINT('Origin',(32.25,-10.,0.));
+#1802=CARTESIAN_POINT('',(32.25,-13.25,0.));
+#1803=CARTESIAN_POINT('',(35.5,-10.,0.));
+#1804=CARTESIAN_POINT('Origin',(-35.5,-13.25,0.));
+#1805=CARTESIAN_POINT('',(-32.25,-13.25,0.));
+#1806=CARTESIAN_POINT('Origin',(-32.25,-10.,0.));
+#1807=CARTESIAN_POINT('',(-35.5,-10.,0.));
+#1808=CARTESIAN_POINT('Origin',(-32.25,10.,0.));
+#1809=CARTESIAN_POINT('',(-35.5,10.,0.));
+#1810=CARTESIAN_POINT('Origin',(-35.5,13.25,0.));
+#1811=CARTESIAN_POINT('Origin',(35.5,-13.25,0.));
+#1812=CARTESIAN_POINT('polyline point',(-35.5,13.25,0.));
+#1813=CARTESIAN_POINT('polyline point',(35.5,13.25,0.));
+#1814=CARTESIAN_POINT('polyline point',(35.5,13.25,0.));
+#1815=CARTESIAN_POINT('polyline point',(35.5,-13.25,0.));
+#1816=CARTESIAN_POINT('polyline point',(35.5,-13.25,0.));
+#1817=CARTESIAN_POINT('polyline point',(-35.5,-13.25,0.));
+#1818=CARTESIAN_POINT('polyline point',(-35.5,-13.25,0.));
+#1819=CARTESIAN_POINT('polyline point',(-35.5,13.25,0.));
+#1820=CARTESIAN_POINT('polyline point',(-34.3,12.05,0.));
+#1821=CARTESIAN_POINT('polyline point',(34.3,12.05,0.));
+#1822=CARTESIAN_POINT('polyline point',(34.3,12.05,0.));
+#1823=CARTESIAN_POINT('polyline point',(34.3,-12.05,0.));
+#1824=CARTESIAN_POINT('polyline point',(34.3,-12.05,0.));
+#1825=CARTESIAN_POINT('polyline point',(-34.3,-12.05,0.));
+#1826=CARTESIAN_POINT('polyline point',(-34.3,-12.05,0.));
+#1827=CARTESIAN_POINT('polyline point',(-34.3,12.05,0.));
+#1828=CARTESIAN_POINT('polyline point',(-34.3,-10.05,100.));
+#1829=CARTESIAN_POINT('polyline point',(-34.3,10.05,100.));
+#1830=CARTESIAN_POINT('polyline point',(-34.3,-7.9,100.));
+#1831=CARTESIAN_POINT('polyline point',(-31.3,-7.9,100.));
+#1832=CARTESIAN_POINT('polyline point',(-31.3,-7.9,100.));
+#1833=CARTESIAN_POINT('polyline point',(-31.3,-9.4,100.));
+#1834=CARTESIAN_POINT('polyline point',(-31.3,-9.4,100.));
+#1835=CARTESIAN_POINT('polyline point',(-34.3,-9.4,100.));
+#1836=CARTESIAN_POINT('polyline point',(-34.3,-9.4,100.));
+#1837=CARTESIAN_POINT('polyline point',(-34.3,-7.9,100.));
+#1838=CARTESIAN_POINT('polyline point',(34.3,10.05,100.));
+#1839=CARTESIAN_POINT('polyline point',(34.3,-10.05,100.));
+#1840=CARTESIAN_POINT('polyline point',(34.3,-7.9,100.));
+#1841=CARTESIAN_POINT('polyline point',(31.3,-7.9,100.));
+#1842=CARTESIAN_POINT('polyline point',(31.3,-7.9,100.));
+#1843=CARTESIAN_POINT('polyline point',(31.3,-9.39999999999999,100.));
+#1844=CARTESIAN_POINT('polyline point',(31.3,-9.39999999999999,100.));
+#1845=CARTESIAN_POINT('polyline point',(34.3,-9.39999999999999,100.));
+#1846=CARTESIAN_POINT('polyline point',(34.3,-9.39999999999999,100.));
+#1847=CARTESIAN_POINT('polyline point',(34.3,-7.9,100.));
+#1848=CARTESIAN_POINT('polyline point',(-32.25,-13.25,100.));
+#1849=CARTESIAN_POINT('polyline point',(32.25,-13.25,100.));
+#1850=CARTESIAN_POINT('polyline point',(-34.3,-5.9,100.));
+#1851=CARTESIAN_POINT('polyline point',(-31.3,-5.9,100.));
+#1852=CARTESIAN_POINT('polyline point',(-31.3,-5.9,100.));
+#1853=CARTESIAN_POINT('polyline point',(-31.3,-4.4,100.));
+#1854=CARTESIAN_POINT('polyline point',(-31.3,-4.4,100.));
+#1855=CARTESIAN_POINT('polyline point',(-34.3,-4.4,100.));
+#1856=CARTESIAN_POINT('polyline point',(-34.3,-4.4,100.));
+#1857=CARTESIAN_POINT('polyline point',(-34.3,-5.9,100.));
+#1858=CARTESIAN_POINT('polyline point',(31.3,-5.9,100.));
+#1859=CARTESIAN_POINT('polyline point',(34.3,-5.9,100.));
+#1860=CARTESIAN_POINT('polyline point',(34.3,-5.9,100.));
+#1861=CARTESIAN_POINT('polyline point',(34.3,-4.39999999999999,100.));
+#1862=CARTESIAN_POINT('polyline point',(34.3,-4.39999999999999,100.));
+#1863=CARTESIAN_POINT('polyline point',(31.3,-4.39999999999999,100.));
+#1864=CARTESIAN_POINT('polyline point',(31.3,-4.39999999999999,100.));
+#1865=CARTESIAN_POINT('polyline point',(31.3,-5.9,100.));
+#1866=CARTESIAN_POINT('polyline point',(32.25,13.25,100.));
+#1867=CARTESIAN_POINT('polyline point',(-32.25,13.25,100.));
+#1868=CARTESIAN_POINT('polyline point',(-35.5,10.,100.));
+#1869=CARTESIAN_POINT('polyline point',(-35.5,-10.,100.));
+#1870=CARTESIAN_POINT('polyline point',(-32.25,-13.25,100.));
+#1871=CARTESIAN_POINT('polyline point',(32.25,-13.25,100.));
+#1872=CARTESIAN_POINT('polyline point',(35.5,-10.,100.));
+#1873=CARTESIAN_POINT('polyline point',(35.5,10.,100.));
+#1874=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1875=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1876=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1877=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1878=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1879=CARTESIAN_POINT('',(-34.3,8.89999999999998,100.));
+#1880=CARTESIAN_POINT('',(-31.15,12.05,100.));
+#1881=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1882=CARTESIAN_POINT('',(31.15,12.05,100.));
+#1883=CARTESIAN_POINT('',(34.3,8.9,100.));
+#1884=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1885=CARTESIAN_POINT('',(31.3,-8.34671336893257,100.));
+#1886=CARTESIAN_POINT('',(31.15,-12.05,100.));
+#1887=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1888=CARTESIAN_POINT('',(-31.15,-12.05,100.));
+#1889=CARTESIAN_POINT('',(-31.3,-8.34671336893257,100.));
+#1890=CARTESIAN_POINT('Origin',(-32.5,10.25,100.));
+#1891=CARTESIAN_POINT('Origin',(-32.5,-10.25,100.));
+#1892=CARTESIAN_POINT('Origin',(32.5,10.25,100.));
+#1893=CARTESIAN_POINT('Origin',(32.5,-10.25,100.));
+#1894=CARTESIAN_POINT('polyline point',(34.3,-5.9,100.));
+#1895=CARTESIAN_POINT('polyline point',(34.3,-7.9,100.));
+#1896=CARTESIAN_POINT('polyline point',(-34.3,-7.9,100.));
+#1897=CARTESIAN_POINT('polyline point',(-34.3,-5.9,100.));
+#1898=CARTESIAN_POINT('polyline point',(-31.3,-7.9,100.));
+#1899=CARTESIAN_POINT('polyline point',(-34.3,-7.9,100.));
+#1900=CARTESIAN_POINT('polyline point',(-31.3,-7.9,100.));
+#1901=CARTESIAN_POINT('polyline point',(-31.5,-7.9,100.));
+#1902=CARTESIAN_POINT('polyline point',(-31.5,-7.9,100.));
+#1903=CARTESIAN_POINT('polyline point',(-31.5,-9.4,100.));
+#1904=CARTESIAN_POINT('polyline point',(-31.5,-9.4,100.));
+#1905=CARTESIAN_POINT('polyline point',(-31.3,-9.4,100.));
+#1906=CARTESIAN_POINT('polyline point',(-31.3,-9.4,100.));
+#1907=CARTESIAN_POINT('polyline point',(-31.3,-7.9,100.));
+#1908=CARTESIAN_POINT('polyline point',(-31.3,-5.9,100.));
+#1909=CARTESIAN_POINT('polyline point',(-31.3,-4.4,100.));
+#1910=CARTESIAN_POINT('polyline point',(-31.3,-4.4,100.));
+#1911=CARTESIAN_POINT('polyline point',(-31.5,-4.4,100.));
+#1912=CARTESIAN_POINT('polyline point',(-31.5,-4.4,100.));
+#1913=CARTESIAN_POINT('polyline point',(-31.5,-5.90000000000002,100.));
+#1914=CARTESIAN_POINT('polyline point',(-31.5,-5.90000000000002,100.));
+#1915=CARTESIAN_POINT('polyline point',(-31.3,-5.90000000000002,100.));
+#1916=CARTESIAN_POINT('polyline point',(-31.3,-5.90000000000002,100.));
+#1917=CARTESIAN_POINT('polyline point',(-31.3,-4.4,100.));
+#1918=CARTESIAN_POINT('polyline point',(31.3,-4.39999999999999,100.));
+#1919=CARTESIAN_POINT('polyline point',(31.5,-4.4,100.));
+#1920=CARTESIAN_POINT('polyline point',(31.5,-4.4,100.));
+#1921=CARTESIAN_POINT('polyline point',(31.5,-5.9,100.));
+#1922=CARTESIAN_POINT('polyline point',(31.5,-5.9,100.));
+#1923=CARTESIAN_POINT('polyline point',(31.3,-5.9,100.));
+#1924=CARTESIAN_POINT('polyline point',(31.3,-5.9,100.));
+#1925=CARTESIAN_POINT('polyline point',(31.3,-4.39999999999999,100.));
+#1926=CARTESIAN_POINT('polyline point',(31.3,-7.9,100.));
+#1927=CARTESIAN_POINT('polyline point',(31.5,-7.9,100.));
+#1928=CARTESIAN_POINT('polyline point',(31.5,-7.9,100.));
+#1929=CARTESIAN_POINT('polyline point',(31.5,-9.39999999999999,100.));
+#1930=CARTESIAN_POINT('polyline point',(31.5,-9.39999999999999,100.));
+#1931=CARTESIAN_POINT('polyline point',(31.3,-9.39999999999999,100.));
+#1932=CARTESIAN_POINT('polyline point',(31.3,-9.39999999999999,100.));
+#1933=CARTESIAN_POINT('polyline point',(31.3,-7.9,100.));
+#1934=CARTESIAN_POINT('polyline point',(-31.3,-5.9,100.));
+#1935=CARTESIAN_POINT('polyline point',(-34.3,-5.9,100.));
+#1936=CARTESIAN_POINT('polyline point',(-34.3,-5.9,100.));
+#1937=CARTESIAN_POINT('polyline point',(-32.5,-5.9,100.));
+#1938=CARTESIAN_POINT('polyline point',(-32.5,-5.9,100.));
+#1939=CARTESIAN_POINT('polyline point',(-32.5,-7.9,100.));
+#1940=CARTESIAN_POINT('polyline point',(-32.5,-7.9,100.));
+#1941=CARTESIAN_POINT('polyline point',(-34.3,-7.9,100.));
+#1942=CARTESIAN_POINT('polyline point',(-34.3,-7.9,100.));
+#1943=CARTESIAN_POINT('polyline point',(-34.3,-5.9,100.));
+#1944=CARTESIAN_POINT('polyline point',(34.3,-5.9,100.));
+#1945=CARTESIAN_POINT('polyline point',(31.3,-5.9,100.));
+#1946=CARTESIAN_POINT('polyline point',(31.3,-7.9,100.));
+#1947=CARTESIAN_POINT('polyline point',(34.3,-7.9,100.));
+#1948=CARTESIAN_POINT('polyline point',(34.3,-5.9,100.));
+#1949=CARTESIAN_POINT('polyline point',(32.5,-5.9,100.));
+#1950=CARTESIAN_POINT('polyline point',(32.5,-5.9,100.));
+#1951=CARTESIAN_POINT('polyline point',(32.5,-7.9,100.));
+#1952=CARTESIAN_POINT('polyline point',(32.5,-7.9,100.));
+#1953=CARTESIAN_POINT('polyline point',(34.3,-7.9,100.));
+#1954=CARTESIAN_POINT('polyline point',(34.3,-7.9,100.));
+#1955=CARTESIAN_POINT('polyline point',(34.3,-5.9,100.));
+#1956=CARTESIAN_POINT('polyline point',(-32.25,-13.25,100.));
+#1957=CARTESIAN_POINT('polyline point',(32.25,-13.25,100.));
+#1958=CARTESIAN_POINT('polyline point',(32.25,13.25,100.));
+#1959=CARTESIAN_POINT('polyline point',(-32.25,13.25,100.));
+#1960=CARTESIAN_POINT('polyline point',(35.5,-10.,100.));
+#1961=CARTESIAN_POINT('polyline point',(35.5,10.,100.));
+#1962=CARTESIAN_POINT('polyline point',(-35.5,10.,100.));
+#1963=CARTESIAN_POINT('polyline point',(-35.5,-10.,100.));
+#1964=CARTESIAN_POINT('polyline point',(-34.1,-5.9,100.));
+#1965=CARTESIAN_POINT('polyline point',(34.1,-5.9,100.));
+#1966=CARTESIAN_POINT('polyline point',(34.1,-5.9,100.));
+#1967=CARTESIAN_POINT('polyline point',(34.1,-7.9,100.));
+#1968=CARTESIAN_POINT('polyline point',(34.1,-7.9,100.));
+#1969=CARTESIAN_POINT('polyline point',(-34.1,-7.90000000000001,100.));
+#1970=CARTESIAN_POINT('polyline point',(-34.1,-7.90000000000001,100.));
+#1971=CARTESIAN_POINT('polyline point',(-34.1,-5.9,100.));
+#1972=CARTESIAN_POINT('polyline point',(-32.5,-5.9,100.));
+#1973=CARTESIAN_POINT('polyline point',(-31.3,-5.9,100.));
+#1974=CARTESIAN_POINT('polyline point',(-31.3,-7.9,100.));
+#1975=CARTESIAN_POINT('polyline point',(-32.5,-7.9,100.));
+#1976=CARTESIAN_POINT('polyline point',(-32.5,-7.9,100.));
+#1977=CARTESIAN_POINT('polyline point',(-32.5,-5.9,100.));
+#1978=CARTESIAN_POINT('polyline point',(32.5,-5.9,100.));
+#1979=CARTESIAN_POINT('polyline point',(32.5,-7.9,100.));
+#1980=CARTESIAN_POINT('Origin',(9.80776221726431,-9.80776221726431,9.80776221726431));
+#1981=CARTESIAN_POINT('Origin',(0.,0.,16.9875424688562));
+#1982=CARTESIAN_POINT('',(0.,0.,0.));
+#1983=CARTESIAN_POINT('Origin',(2.61331282407732E-14,0.,117.693146607172));
+#1984=CARTESIAN_POINT('Origin',(0.,0.,117.693146607172));
+#1985=CARTESIAN_POINT('',(0.,0.,0.));
+#1986=CARTESIAN_POINT('Origin',(0.,117.693146607172,0.));
+#1987=CARTESIAN_POINT('Origin',(0.,0.,117.693146607172));
+#1988=CARTESIAN_POINT('',(0.,0.,0.));
+#1989=CARTESIAN_POINT('Origin',(117.693146607172,0.,0.));
+#1990=CARTESIAN_POINT('Origin',(0.,0.,117.693146607172));
+#1991=CARTESIAN_POINT('',(0.,0.,0.));
+#1992=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#1993=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#1994=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#1995=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#1996=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#1997=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2001,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#1998=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2001,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#1999=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1997))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#2001,#2003,#2004))
+REPRESENTATION_CONTEXT('','3D')
+);
+#2000=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1998))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#2001,#2003,#2004))
+REPRESENTATION_CONTEXT('','3D')
+);
+#2001=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.MILLI.,.METRE.)
+);
+#2002=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.CENTI.,.METRE.)
+);
+#2003=(
+NAMED_UNIT(*)
+PLANE_ANGLE_UNIT()
+SI_UNIT($,.RADIAN.)
+);
+#2004=(
+NAMED_UNIT(*)
+SI_UNIT($,.STERADIAN.)
+SOLID_ANGLE_UNIT()
+);
+#2005=SHAPE_DEFINITION_REPRESENTATION(#2006,#2007);
+#2006=PRODUCT_DEFINITION_SHAPE('',$,#2009);
+#2007=SHAPE_REPRESENTATION('',(#1125),#1999);
+#2008=PRODUCT_DEFINITION_CONTEXT('part definition',#2013,'design');
+#2009=PRODUCT_DEFINITION('case','case_flagless',#2010,#2008);
+#2010=PRODUCT_DEFINITION_FORMATION('',$,#2015);
+#2011=PRODUCT_RELATED_PRODUCT_CATEGORY('case_flagless','case_flagless',
+(#2015));
+#2012=APPLICATION_PROTOCOL_DEFINITION('international standard',
+'ap242_managed_model_based_3d_engineering',2011,#2013);
+#2013=APPLICATION_CONTEXT('Managed model based 3d engineering');
+#2014=PRODUCT_CONTEXT('part definition',#2013,'mechanical');
+#2015=PRODUCT('case','case_flagless',$,(#2014));
+#2016=PRESENTATION_STYLE_ASSIGNMENT((#2026));
+#2017=PRESENTATION_STYLE_ASSIGNMENT((#2027));
+#2018=PRESENTATION_STYLE_ASSIGNMENT((#2028));
+#2019=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2020=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2021=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2022=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2023=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2024=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2025=PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)));
+#2026=SURFACE_STYLE_USAGE(.BOTH.,#2031);
+#2027=SURFACE_STYLE_USAGE(.BOTH.,#2032);
+#2028=SURFACE_STYLE_USAGE(.BOTH.,#2033);
+#2029=SURFACE_STYLE_RENDERING_WITH_PROPERTIES($,#2043,(#2030));
+#2030=SURFACE_STYLE_TRANSPARENT(0.);
+#2031=SURFACE_SIDE_STYLE('',(#2034,#2029));
+#2032=SURFACE_SIDE_STYLE('',(#2035));
+#2033=SURFACE_SIDE_STYLE('',(#2036));
+#2034=SURFACE_STYLE_FILL_AREA(#2037);
+#2035=SURFACE_STYLE_FILL_AREA(#2038);
+#2036=SURFACE_STYLE_FILL_AREA(#2039);
+#2037=FILL_AREA_STYLE('',(#2040));
+#2038=FILL_AREA_STYLE('',(#2041));
+#2039=FILL_AREA_STYLE('',(#2042));
+#2040=FILL_AREA_STYLE_COLOUR('',#2043);
+#2041=FILL_AREA_STYLE_COLOUR('',#2044);
+#2042=FILL_AREA_STYLE_COLOUR('',#2045);
+#2043=COLOUR_RGB('',0.749019607843137,0.749019607843137,0.749019607843137);
+#2044=COLOUR_RGB('',1.,1.,0.);
+#2045=COLOUR_RGB('',0.,0.,0.);
+ENDSEC;
+END-ISO-10303-21;

BIN
3D models/usb-kvm case/test_fit_flagless.iam


File diff suppressed because it is too large
+ 27 - 0
designs/logo_bw_pro.ai


+ 29 - 0
designs/logo_bw_pro.svg

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="186px" viewBox="0 0 512 186" enable-background="new 0 0 512 186" xml:space="preserve">
+<path fill="#231815" d="M500,134.363c0,15.466-14.414,28.004-32.197,28.004H51.197C33.415,162.367,19,149.829,19,134.363V51.636
+	c0-15.466,14.415-28.003,32.197-28.003h416.606C485.586,23.633,500,36.17,500,51.636V134.363z"/>
+<g>
+	<path fill="#FFFFFF" d="M49.605,57.062h25.078c8.359,0,15.465,2.926,21.316,8.777c6.126,6.132,9.195,15.328,9.195,27.586
+		c0,11.704-3.207,20.761-9.613,27.168c-5.296,5.297-12.265,7.941-20.898,7.941H49.605V57.062z M59.219,65.003v55.59h15.047
+		c5.29,0,9.613-1.672,12.957-5.016c5.29-5.291,7.941-12.677,7.941-22.153c0-10.031-2.508-17.555-7.523-22.57
+		c-3.905-3.899-8.359-5.852-13.375-5.852H59.219z"/>
+	<path fill="#FFFFFF" d="M124.004,86.738c3.899-3.899,8.915-5.852,15.047-5.852c5.852,0,10.867,2.09,15.047,6.27
+		c3.899,3.905,5.852,9.894,5.852,17.973h-33.855c0,5.852,1.391,10.174,4.18,12.957c2.508,2.508,5.708,3.762,9.613,3.762
+		c3.899,0,6.688-0.836,8.359-2.508c1.946-1.947,2.926-4.18,2.926-6.688h9.195c-1.117,5.016-2.926,8.777-5.434,11.285
+		c-3.625,3.625-8.64,5.434-15.047,5.434c-6.688,0-12.121-2.09-16.301-6.27c-4.46-4.455-6.688-10.449-6.688-17.973
+		S119.263,91.479,124.004,86.738z M130.273,91.335c-1.953,1.953-3.207,4.323-3.762,7.106h23.824c0-2.783-1.117-5.291-3.344-7.524
+		c-1.953-1.946-4.741-2.926-8.359-2.926C135.289,87.992,132.5,89.108,130.273,91.335z"/>
+	<path fill="#FFFFFF" d="M171.234,81.722h36.782v7.105l-28.422,33.02h30.512v6.688h-40.543v-7.105l28.422-33.02h-26.75V81.722z"/>
+	<path fill="#FFFFFF" d="M220.555,81.722h8.359v31.348c0,3.344,0.836,5.852,2.508,7.523c1.391,1.396,3.344,2.09,5.852,2.09
+		c3.618,0,6.824-1.391,9.613-4.18c4.18-4.18,6.27-8.497,6.27-12.957V81.722h8.359v46.813h-8.359v-8.359
+		c-4.461,6.133-9.895,9.195-16.301,9.195c-5.852,0-10.031-1.254-12.539-3.762s-3.762-5.709-3.762-9.613V81.722z"/>
+	<path fill="#FFFFFF" d="M275.309,57.062h9.613v32.602l32.602-32.602h12.121l-28.422,28.422l28.84,43.051h-11.285l-24.242-36.364
+		l-9.613,9.614v26.75h-9.613V57.062z"/>
+	<path fill="#FFFFFF" d="M333.406,56.644h10.031l22.152,58.098l22.152-58.098h10.031l-28.422,72.309h-7.523L333.406,56.644z"/>
+	<path fill="#FFFFFF" d="M406.969,57.062h12.957l19.227,55.59l19.227-55.59h12.957v71.473h-9.613V73.781l-19.227,54.754h-6.688
+		l-19.227-54.754v54.754h-9.613V57.062z"/>
+</g>
+</svg>

+ 48 - 0
usbkvm-app/README.md

@@ -0,0 +1,48 @@
+# USB-KVM App
+
+A USB-KVM application that runs on your laptop / PC that provide an interface for using the USB-KVM device.
+
+**This is the off-grid version of DezuKVM and only provide a subset of features that the full DezuKVM IP-KVM has to offer. This is mostly for local debugging or as a temporary display / keyboard & mouse for server management. **
+
+## Hosting
+
+### Self-hosted Site with HTTPS
+
+Since the USB-KVM app is simply a webpage, if you already got a server with proper HTTPS setup, you can just rename & place the whole `./www/` folder into your web server and launch the index.html on your laptop that has the USB-KVM device connected. 
+
+### Run USB-KVM App Offline / Without external web server
+
+If you do not have a HTTPS web server already running in your homelab or you want to use the USB-KVM offline, you can use the simple HTTPS server provided here to serve the site wit ha self-signed certificate.
+
+```
+go mod tidy
+go build
+./usbkvm
+```
+
+This will automatically generate the `cert.pem` and `key.pem` file for the TLS connection and you can visit the self-hosted USB-KVM App user interface by opening `https://localhost:8443` using Chrome (or any Chromium based) browser.
+
+*Note: Firefox do not support Web Serial API, so until Firefox support this API, you will not be able to use this with Firefox Browser.*
+
+
+
+## Usage
+
+1. Connect the DezuKVM USB-KVM device to your laptop via the host side USB port
+2. Connect the remote server / computer that you want to control to the DezuKVM USB-KVM device via the HDMI port and the USB port. 
+3. Start USB-KVM app on your laptop. Since all the operations and logic are written on the front-end page, you can either load it from a remote or local web server, as soon as there are **HTTS** it will work.
+4. Select the video capture device, it usually shows up as USB Video
+5. (Optional) Select the audio capture device, it usually show up as USB Digital Audio
+6. Click the keyboard icon and select the USB UART interface that connects to the CH9329 keyboard HID chip. There are two serial devices on the DezuKVM device and the USB UART one are for KVM and the CDC device are for the onboard auxiliary MCU (the AuxMCU is not used in this setup. See dezukvmd for more details on how it is used)
+7. If everything works correctly, you should be able to see your remote computer video and audio output on your browser tab, as well as moving the remote cursor with your local mouse.
+
+## Screenshots
+
+![image-20251004211247522](img/README/image-20251004211247522.png)
+
+![image-20251004211315151](img/README/image-20251004211315151.png)
+
+
+
+
+

+ 18 - 0
usbkvm-app/cert.pem

@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC8zCCAdugAwIBAgIIEU4asu6p77AwDQYJKoZIhvcNAQELBQAwEzERMA8GA1UE
+ChMIUmVkZXNLVk0wHhcNMjUxMDA0MDgxMzQ3WhcNMjYxMDA0MDgxMzQ3WjATMREw
+DwYDVQQKEwhSZWRlc0tWTTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AL10JwFhsxGjeEs/CD+GzERtQR2lj9KM1zDnSunbGr7QrCBqVkL374pf3H1quwyT
+Kk/GrD27gVjrgJYfFd/w1VL185MlCKT641hOmi3AgtNAN1psxjywMeMBRNYkmp8m
+jXo2+LRD7T7QlNrZ4d242/Ye28kVq3564fx6UNJs2vXV+kUpAmg64KpUfSNS5ENk
+nehtKFmmNgV+iun8QB4qIlel/8Bp2x7grs/FT8xcHro0LCQ+cL1NVxi/GZN3dV5g
+oyD4uFIfydFQ2lCF8v+DMOZ3oNRuDce5bYADEBRsjNHzd6BAQyC4QLBHdRP/T9yb
+bt9T74jXjBs5puHhwyhI45kCAwEAAaNLMEkwDgYDVR0PAQH/BAQDAgWgMBMGA1Ud
+JQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxo
+b3N0MA0GCSqGSIb3DQEBCwUAA4IBAQBnFrNHbqOrduxCYJV0FePPfa/ny8yHO4YJ
+EHPpFushh9YvvR1icDMNEWhKa89/h4LuQxKRBmASiBLJ7B3H6uTjYoYq0/dhNNzm
+FQoChVpye+QhhTMp77A5y/RNHU1Jxl1cc+qarZfIkw/RqtGv9cO7SM90lrZBzv7w
+bb7fxjaEt2yzW5+4rUc18jNhCLRz9IhHkpQSNXfC6zP1daHZmQzBg8d0+si66XlX
+gwFCK/q0RDmDyXLAWYjTGORvgypF/m/sGqUNbJKjEfc6gVWSYz/9rquDuuVj1hHv
+M1szRkOKCkwr5olmkvz2R31ZZLE/xU9A7xFX+jraQaL7okI7KdwW
+-----END CERTIFICATE-----

+ 3 - 0
usbkvm-app/go.mod

@@ -0,0 +1,3 @@
+module aroz.org/remdeskvm/usbkvm
+
+go 1.24.1

BIN
usbkvm-app/img/README/image-20251004211247522.png


BIN
usbkvm-app/img/README/image-20251004211315151.png


BIN
usbkvm-app/img/README/image-20251004211519671.png


+ 27 - 0
usbkvm-app/key.pem

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAvXQnAWGzEaN4Sz8IP4bMRG1BHaWP0ozXMOdK6dsavtCsIGpW
+Qvfvil/cfWq7DJMqT8asPbuBWOuAlh8V3/DVUvXzkyUIpPrjWE6aLcCC00A3WmzG
+PLAx4wFE1iSanyaNejb4tEPtPtCU2tnh3bjb9h7byRWrfnrh/HpQ0mza9dX6RSkC
+aDrgqlR9I1LkQ2Sd6G0oWaY2BX6K6fxAHioiV6X/wGnbHuCuz8VPzFweujQsJD5w
+vU1XGL8Zk3d1XmCjIPi4Uh/J0VDaUIXy/4Mw5neg1G4Nx7ltgAMQFGyM0fN3oEBD
+ILhAsEd1E/9P3Jtu31PviNeMGzmm4eHDKEjjmQIDAQABAoIBAE8G6Axd/i3B5Dhz
+GxQwvP1gG5TrznIUGOGH4YpqQJ5O+jXtVX1K4gt1EErqngrRSomLhKadlAeM+Q7l
++aB32+xmtwtum8wB8ZqQ8yRZlNjdBRn9nLWNA8o+6cFv9GWl1ccgrh635PtaU3V1
+BJASAAMK/UBEf0xbou/H7/XOvYlk1+8Ky6XSVB8lgkxmFGb54ZwgpRa38RSzxCk8
+4qwfUvg6CXXF/Xal09drbEUYwq9OkRTuSt+V1Cq8SN2W+ulMRzvsCa8CjWAJXjWV
+hnLcQpdcTAfFppjVMNhh7ry/eLEwDNpGVR6qVLFdi8iodwi9FojE6Zglct/W4/io
+6D5M/y8CgYEAzKrjcz8wyxWW3F4P9s7lBWG18Vpf/O8RLb2nsNKaEwGkcXtU3VAe
+SZINUex7umjlBVfAcoiUja346m0CHJ9LvdZv/eKQUp09e362nmLhwY+8PxcVIIQq
+biGtZZYGmyXV/disUykIWrFJGI0Pge3Oq/pRlJRr1H3kcNCan62afNcCgYEA7Pht
+yqzBRF2tOz4H6P4N8/hC+0bddKdDdtAb5+Mip4pJoJakVc3Kxtgcukz2YuJcnl+I
+lzZjBTQjSzF0I341MXpuOwqrqbp1JF4FcBfC8PgryLXREaZHxSFknXwgGZr9cb3r
+4mYDubSGg5y/s8asEUpKaA4XywY7Da7Ur/7DpQ8CgYARyPvQ5PnZe/vLFIVwnhP6
+vr3vxjm3IhMtFWEAFZz779WZYu1B+hdXr1BnARTTYxAbwb9gdIvsL+UEggp/8DvF
+uF+tAUYnV7CjDaTS6KbTiikCln/ofnOtdFG8FShnzQbmczCuXU9zihpe/ssNMFwY
+R71VGvyvz2zNfOMi4xQcqwKBgQDdPsUjKU/4iI2odi3kdu6IDg5blLpGo7P1RjAH
+vKUqT46WhI9CHTVpmXSY7CpOAJIAu6lHpNumjBs3pSCN0tPPMkOglEHZ4eBk5/Oj
+yEuVt98JMdfU5q6zeo36C13dCjv+6hdF9YEc7VN5pevF6YPVUMtPg3jrcRHJoKWq
+++2mOQKBgQChHR3kuSdBA9o8PxJz2E4O6PxzOntEQH1VAYIszsAOzP4CS77MKMMW
+eplmBfgV1AOwbsuM7/4rxNmkpmBtyskKbUUS6sIdcmQI0wuBALe8IM33P8UsrmlY
+pSSisqLNj4Cau3+fwpp8xSfF4F29wqZ4bVhZqdmwH4Z8wXElhyrbAg==
+-----END RSA PRIVATE KEY-----

+ 126 - 0
usbkvm-app/main.go

@@ -0,0 +1,126 @@
+package main
+
+import (
+	"crypto/rand"
+	"crypto/rsa"
+	"crypto/tls"
+	"crypto/x509"
+	"crypto/x509/pkix"
+	"embed"
+	"encoding/pem"
+	"flag"
+	"fmt"
+	"io/fs"
+	"log"
+	"math/big"
+	"net/http"
+	"os"
+	"time"
+)
+
+//go:embed www/*
+var embeddedFiles embed.FS
+
+const (
+	certFile = "cert.pem"
+	keyFile  = "key.pem"
+)
+
+func main() {
+	dev := flag.Bool("dev", true, "Serve files from www/ directory instead of embedded files")
+	addr := flag.String("addr", ":8443", "HTTPS server address")
+	flag.Parse()
+
+	// Check and generate certs if needed
+	if !fileExists(certFile) || !fileExists(keyFile) {
+		fmt.Println("Certificates not found, generating self-signed certificate...")
+		if err := generateSelfSignedCert(certFile, keyFile); err != nil {
+			log.Fatalf("Failed to generate certificate: %v", err)
+		}
+	}
+
+	var handler http.Handler
+	if *dev {
+		fmt.Println("Development mode: serving from www/ directory")
+		handler = http.FileServer(http.Dir("www"))
+	} else {
+		fmt.Println("Production mode: serving embedded files")
+		subFS, err := fs.Sub(embeddedFiles, "www")
+		if err != nil {
+			log.Fatalf("Failed to get sub filesystem: %v", err)
+		}
+		handler = http.FileServer(http.FS(subFS))
+	}
+
+	mux := http.NewServeMux()
+	mux.Handle("/", handler)
+
+	server := &http.Server{
+		Addr:    *addr,
+		Handler: mux,
+		TLSConfig: &tls.Config{
+			MinVersion: tls.VersionTLS12,
+		},
+	}
+
+	fmt.Printf("Starting HTTPS server on %s\n", *addr)
+	log.Fatal(server.ListenAndServeTLS(certFile, keyFile))
+}
+
+func fileExists(filename string) bool {
+	info, err := os.Stat(filename)
+	return err == nil && !info.IsDir()
+}
+
+func generateSelfSignedCert(certPath, keyPath string) error {
+	priv, err := rsa.GenerateKey(rand.Reader, 2048)
+	if err != nil {
+		return err
+	}
+
+	serialNumber, err := rand.Int(rand.Reader, big.NewInt(1<<62))
+	if err != nil {
+		return err
+	}
+
+	template := x509.Certificate{
+		SerialNumber: serialNumber,
+		Subject: pkix.Name{
+			Organization: []string{"RedesKVM"},
+		},
+		NotBefore:             time.Now(),
+		NotAfter:              time.Now().Add(365 * 24 * time.Hour),
+		KeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
+		ExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
+		BasicConstraintsValid: true,
+	}
+
+	// Add localhost as SAN
+	template.DNSNames = []string{"localhost"}
+
+	derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
+	if err != nil {
+		return err
+	}
+
+	certOut, err := os.Create(certPath)
+	if err != nil {
+		return err
+	}
+	defer certOut.Close()
+	if err := pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil {
+		return err
+	}
+
+	keyOut, err := os.OpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
+	if err != nil {
+		return err
+	}
+	defer keyOut.Close()
+	privBytes := x509.MarshalPKCS1PrivateKey(priv)
+	if err := pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: privBytes}); err != nil {
+		return err
+	}
+
+	return nil
+}

+ 29 - 0
usbkvm-app/www/img/logo.svg

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="186px" viewBox="0 0 512 186" enable-background="new 0 0 512 186" xml:space="preserve">
+<path fill="#231815" d="M500,134.363c0,15.466-14.414,28.004-32.197,28.004H51.197C33.415,162.367,19,149.829,19,134.363V51.636
+	c0-15.466,14.415-28.003,32.197-28.003h416.606C485.586,23.633,500,36.17,500,51.636V134.363z"/>
+<g>
+	<path fill="#FFFFFF" d="M49.605,57.062h25.078c8.359,0,15.465,2.926,21.316,8.777c6.126,6.132,9.195,15.328,9.195,27.586
+		c0,11.704-3.207,20.761-9.613,27.168c-5.296,5.297-12.265,7.941-20.898,7.941H49.605V57.062z M59.219,65.003v55.59h15.047
+		c5.29,0,9.613-1.672,12.957-5.016c5.29-5.291,7.941-12.677,7.941-22.153c0-10.031-2.508-17.555-7.523-22.57
+		c-3.905-3.899-8.359-5.852-13.375-5.852H59.219z"/>
+	<path fill="#FFFFFF" d="M124.004,86.738c3.899-3.899,8.915-5.852,15.047-5.852c5.852,0,10.867,2.09,15.047,6.27
+		c3.899,3.905,5.852,9.894,5.852,17.973h-33.855c0,5.852,1.391,10.174,4.18,12.957c2.508,2.508,5.708,3.762,9.613,3.762
+		c3.899,0,6.688-0.836,8.359-2.508c1.946-1.947,2.926-4.18,2.926-6.688h9.195c-1.117,5.016-2.926,8.777-5.434,11.285
+		c-3.625,3.625-8.64,5.434-15.047,5.434c-6.688,0-12.121-2.09-16.301-6.27c-4.46-4.455-6.688-10.449-6.688-17.973
+		S119.263,91.479,124.004,86.738z M130.273,91.335c-1.953,1.953-3.207,4.323-3.762,7.106h23.824c0-2.783-1.117-5.291-3.344-7.524
+		c-1.953-1.946-4.741-2.926-8.359-2.926C135.289,87.992,132.5,89.108,130.273,91.335z"/>
+	<path fill="#FFFFFF" d="M171.234,81.722h36.782v7.105l-28.422,33.02h30.512v6.688h-40.543v-7.105l28.422-33.02h-26.75V81.722z"/>
+	<path fill="#FFFFFF" d="M220.555,81.722h8.359v31.348c0,3.344,0.836,5.852,2.508,7.523c1.391,1.396,3.344,2.09,5.852,2.09
+		c3.618,0,6.824-1.391,9.613-4.18c4.18-4.18,6.27-8.497,6.27-12.957V81.722h8.359v46.813h-8.359v-8.359
+		c-4.461,6.133-9.895,9.195-16.301,9.195c-5.852,0-10.031-1.254-12.539-3.762s-3.762-5.709-3.762-9.613V81.722z"/>
+	<path fill="#FFFFFF" d="M275.309,57.062h9.613v32.602l32.602-32.602h12.121l-28.422,28.422l28.84,43.051h-11.285l-24.242-36.364
+		l-9.613,9.614v26.75h-9.613V57.062z"/>
+	<path fill="#FFFFFF" d="M333.406,56.644h10.031l22.152,58.098l22.152-58.098h10.031l-28.422,72.309h-7.523L333.406,56.644z"/>
+	<path fill="#FFFFFF" d="M406.969,57.062h12.957l19.227,55.59l19.227-55.59h12.957v71.473h-9.613V73.781l-19.227,54.754h-6.688
+		l-19.227-54.754v54.754h-9.613V57.062z"/>
+</g>
+</svg>

+ 143 - 0
usbkvm-app/www/index.html

@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+        <meta name="description" content="DezuKVM | Local Mode">
+        <meta name="author" content="dezukvm.aroz.org">
+        <title>DezuKVM | Local Mode</title>
+        <!-- Tocas UI -->
+        <link rel="stylesheet" href="tocas/tocas.min.css">
+        <script src="tocas/tocas.min.js"></script>
+
+        <!-- Noto Sans TC (local) -->
+        <style>
+            @font-face {
+            font-family: 'Noto Sans TC';
+            src: url('./tocas/NotoSansTc-VariableFont_wght.ttf') format('truetype');
+            font-weight: 100 200 300 400 500 600 700;
+            font-style: normal;
+            font-display: swap;
+            }
+        </style>
+
+        <style>
+            body {
+                margin: 0;
+                padding: 0;
+                height: 100vh;
+                width: 100vw;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                box-sizing: border-box;
+                overflow: hidden;
+                background-color: black;
+                font-family: 'Noto Sans TC';
+            }
+            
+
+            #video {
+                max-width: 100vw;
+                max-height: 100vh;
+                width: auto;
+                height: auto;
+                display: block;
+                margin: auto;
+                object-fit: contain;
+                z-index: 0;
+            }
+
+            #menu {
+                position: fixed;
+                top: 0px;
+                left: 50%;
+                width: 80%;
+                transform: translateX(-50%);
+                padding: 0.4em;
+                display: flex;
+                gap: 3px;
+                z-index: 1000;
+
+                background-color: rgba(255,255,255,0.7);
+                border-bottom-left-radius: 10px;
+                border-bottom-right-radius: 10px;
+            }
+
+        @media (max-width: 1280px) {
+            #menu {
+                width: calc(100% - 1em);
+            }
+        }
+
+            #touchscreen {
+                position: fixed;
+                top: 0;
+                left: 0;
+                width: 100vw;
+                height: 100vh;
+                z-index: 500;
+            }
+        </style>
+    </head>
+<body>
+    <div id="menu">
+        <div class="ts-image">
+            <img src="img/logo.svg" width="120" style="margin-top:-6px;">
+        </div>
+        <!-- Select video feed -->
+        <div class="ts-select is-small has-start-spaced-small"> 
+            <select id="videoSource"></select>
+        </div>
+        <button id="refreshCameras" class="ts-button is-icon is-small"><span class="ts-icon is-arrows-rotate-icon"></span></button>
+        <!-- Select audio feed -->
+        <div class="ts-select is-small has-start-spaced-small"> 
+            <select id="audioSource"></select>
+        </div>
+        <button id="refreshAudioSources" class="ts-button is-icon is-small"><span class="ts-icon is-arrows-rotate-icon"></span></button>
+        <!-- Serial Ports -->
+        <button id="selectSerialPort"  class="ts-button is-icon is-small has-start-spaced-small"><span class="ts-icon is-keyboard-icon"></span></button>
+        <span id="selectedPort" class="has-start-spaced-small" style="margin-top: 0.1em;"> Not Connected</span>
+        <!-- Fullscreen -->
+        <button id="fullscreenBtn" class="ts-button is-icon is-small has-start-spaced-small"><span class="ts-icon is-maximize-icon"></span></button>
+    
+        <!-- Software HID reset -->
+        <button id="resetHIDBtn" class="ts-button is-small is-negative has-start-spaced-small" style="margin-left:auto;">Reset HID</button>
+        <!-- Hide menu button -->
+        <button id="hideMenuBtn" class="ts-button is-icon is-small" style="margin-left:auto;"><span class="ts-icon is-chevron-up-icon"></span></button>
+    </div>
+    <video id="video" autoplay playsinline style="width:100%;max-width:100%;"></video>
+    <div id="touchscreen"></div>
+    
+    <script src="local-kvm.js"></script>
+    <script>
+        const menu = document.getElementById('menu');
+        const hideMenuBtn = document.getElementById('hideMenuBtn');
+
+        // Hide menu when button is clicked
+        hideMenuBtn.addEventListener('click', () => {
+            menu.style.display = 'none';
+            showMenuBtn.style.display = 'block';
+        });
+
+        // Create a show menu button
+        const showMenuBtn = document.createElement('button');
+        showMenuBtn.id = 'showMenuBtn';
+        showMenuBtn.className = 'ts-button is-icon is-small';
+        showMenuBtn.style.position = 'fixed';
+        showMenuBtn.style.top = '0.5em';
+        showMenuBtn.style.right = '0.5em';
+        showMenuBtn.style.zIndex = '1001';
+        showMenuBtn.style.display = 'none';
+        showMenuBtn.innerHTML = '<span class="ts-icon is-chevron-down-icon"></span>';
+        document.body.appendChild(showMenuBtn);
+
+        // Show menu when show button is clicked
+        showMenuBtn.addEventListener('click', () => {
+            menu.style.display = 'flex';
+            showMenuBtn.style.display = 'none';
+        });
+    </script>
+</body>
+</html>

+ 753 - 0
usbkvm-app/www/local-kvm.js

@@ -0,0 +1,753 @@
+
+/*
+    USB Serial
+
+    The following section handles USB serial communication using the Web Serial API.
+*/
+let serialPort = null;
+let serialReader = null;
+let serialWriter = null;
+let serialReadBuffer = [];
+
+// Update selected port display
+function updateSelectedPortDisplay(port) {
+    const selectedPortElem = document.getElementById('selectedPort');
+    if (port && port.getInfo) {
+        const info = port.getInfo();
+        selectedPortElem.textContent = `VID: ${info.usbVendorId || '-'}, PID: ${info.usbProductId || '-'}`;
+    } else if (port) {
+        selectedPortElem.textContent = 'KVM Connected';
+    } else {
+        selectedPortElem.textContent = 'KVM Not Connected';
+    }
+}
+
+// Request a new serial port
+async function requestSerialPort() {
+    try {
+        // Disconnect previous port if connected
+        if (serialPort) {
+            await disconnectSerialPort();
+        }
+        serialPort = await navigator.serial.requestPort();
+        await serialPort.open({ baudRate: 115200 });
+        serialReader = serialPort.readable.getReader();
+        serialWriter = serialPort.writable.getWriter();
+        updateSelectedPortDisplay(serialPort);
+
+        // Change button to indicate connected state
+        document.getElementById('selectSerialPort').classList.add('is-negative');
+        document.querySelector('#selectSerialPort span').className = 'ts-icon is-link-slash-icon';
+
+        // Start reading loop for incoming data
+        readSerialLoop();
+    } catch (e) {
+        updateSelectedPortDisplay(null);
+        alert('Failed to open serial port');
+    }
+}
+
+// Disconnect serial port
+async function disconnectSerialPort() {
+    try {
+        if (serialReader) {
+            await serialReader.cancel();
+            serialReader.releaseLock();
+            serialReader = null;
+        }
+        if (serialWriter) {
+            serialWriter.releaseLock();
+            serialWriter = null;
+        }
+        if (serialPort) {
+            await serialPort.close();
+            serialPort = null;
+        }
+    } catch (e) {}
+    updateSelectedPortDisplay(null);
+}
+
+// Read loop for incoming serial data, dispatches 'data' events on parent
+async function readSerialLoop() {
+    while (serialPort && serialReader) {
+        try {
+            const { value, done } = await serialReader.read();
+            if (done) break;
+            if (value) {
+                // Append to buffer
+                //serialReadBuffer.push(...value);
+                //console.log('Received data:', Array.from(value).map(b => b.toString(16).padStart(2, '0')).join(' '));
+            }
+        } catch (e) {
+            break;
+        }
+    }
+}
+
+// Send data over serial
+async function sendSerial(data) {
+    if (!serialWriter) throw new Error('Serial port not open');
+    await serialWriter.write(data);
+}
+
+// Button event to select serial port
+document.getElementById('selectSerialPort').addEventListener('click', function(){
+    if (serialPort) {
+        disconnectSerialPort();
+        document.getElementById('selectSerialPort').classList.remove('is-negative');
+        document.querySelector('#selectSerialPort span').className = 'ts-icon is-keyboard-icon';
+    } else {
+        requestSerialPort();
+    }
+});
+
+/*
+    CH9329 HID bytecode converter
+*/
+function calcChecksum(arr) {
+    // Simple checksum: sum of bytes, lowest 8 bits
+    return arr.reduce((sum, b) => (sum + b) & 0xFF, 0);
+}
+
+function resizeTouchscreenToVideo() {
+    const video = document.getElementById('video');
+    const touchscreen = document.getElementById('touchscreen');
+    if (video && touchscreen) {
+        const rect = video.getBoundingClientRect();
+        // Assume video stream is always 16:9 (1920x1080)
+        const aspectRatio = 16 / 9;
+        let displayWidth = rect.width;
+        let displayHeight = rect.height;
+        let offsetX = 0;
+        let offsetY = 0;
+
+        // Calculate the actual displayed video area (may be letterboxed/pillarboxed)
+        if (rect.width / rect.height > aspectRatio) {
+            // Pillarbox: black bars left/right
+            displayHeight = rect.height;
+            displayWidth = rect.height * aspectRatio;
+            offsetX = rect.left + (rect.width - displayWidth) / 2;
+            offsetY = rect.top;
+        } else {
+            // Letterbox: black bars top/bottom
+            displayWidth = rect.width;
+            displayHeight = rect.width / aspectRatio;
+            offsetX = rect.left;
+            offsetY = rect.top + (rect.height - displayHeight) / 2;
+        }
+
+        touchscreen.style.position = 'absolute';
+        touchscreen.style.left = offsetX + 'px';
+        touchscreen.style.top = offsetY + 'px';
+        touchscreen.style.width = displayWidth + 'px';
+        touchscreen.style.height = displayHeight + 'px';
+        touchscreen.width = displayWidth;
+        touchscreen.height = displayHeight;
+    }
+}
+
+// Call on load and on resize
+window.addEventListener('resize', resizeTouchscreenToVideo);
+window.addEventListener('DOMContentLoaded', resizeTouchscreenToVideo);
+setTimeout(resizeTouchscreenToVideo, 1000); // Also after 1s to ensure video is loaded
+
+class HIDController {
+    constructor() {
+        this.hidState = {
+            MouseButtons: 0x00,
+            Modkey: 0x00,
+            KeyboardButtons: [0, 0, 0, 0, 0, 0]
+        };
+        this.Config = {
+            ScrollSensitivity: 1
+        };
+    }
+
+    // Calculates checksum for a given array of bytes
+    calcChecksum(arr) {
+        return arr.reduce((sum, b) => (sum + b) & 0xFF, 0);
+    }
+
+    // Soft reset the CH9329 chip
+    async softReset() {
+        if (!serialPort || !serialPort.readable || !serialPort.writable) {
+            throw new Error('Serial port not open');
+        }
+        const packet = [
+            0x57, 0xAB, 0x00, 0x0F, 0x00 // checksum placeholder
+        ];
+        packet[4] = this.calcChecksum(packet.slice(0, 4));
+        await this.sendPacketAndWait(packet, 0x0F);
+    }
+
+    // Sends a packet over serial and waits for a reply with a specific command code
+    async sendPacketAndWait(packet, replyCmd) {
+        const timeout = 300; // 300ms timeout
+        const succReplyByte = replyCmd | 0x80;
+	    const errorReplyByte = replyCmd | 0xC0;
+        // Succ example for cmd 0x04: 57 AB 00 84 01 00 87
+        // Header is 57 AB 00, we can skip that
+        // then the 0x84 is the replyCmd | 0x80 (or if error, 0xC4)
+        // 0x01 is the data length (1 byte)
+        // 0x00 is the data (success)
+        // 0x87 is the checksum
+        serialReadBuffer = [];
+        await sendSerial(new Uint8Array(packet));
+        const startTime = Date.now();
+        /*
+        while (true) {
+            // Check for timeout
+            if (Date.now() - startTime > timeout) {
+                //Timeout, ignore this reply
+                return Promise.reject(new Error('timeout waiting for reply'));
+            }  
+            // Check if we have enough data for a reply
+            if (serialReadBuffer.length >= 5) {
+                // Look for the start of a packet
+                for (let i = 0; i <= serialReadBuffer.length - 5; i++) {
+                    if (serialReadBuffer[i] === 0x57 && serialReadBuffer[i + 1] === 0xAB) {
+                       //Discard bytes before the packet
+                       if (i > 0) {
+                           serialReadBuffer.splice(0, i);
+                       }
+
+                       // Now we have 57 AB at the start, check if we have the full packet
+                       const len = serialReadBuffer[3];
+                       const fullPacketLength = 4 + len + 1;
+                       if (serialReadBuffer.length >= fullPacketLength) {
+                           const packet = serialReadBuffer.slice(0, fullPacketLength);
+                           serialReadBuffer = serialReadBuffer.slice(fullPacketLength);
+                           const checksum = this.calcChecksum(packet.slice(0, fullPacketLength - 1));
+                           if (checksum !== packet[fullPacketLength - 1]) {
+                               // Invalid checksum, discard packet
+                               continue;
+                           }
+                           if (packet[4] === replyCmd) {
+                               return Promise.resolve();
+                           }
+                       }
+                    }
+                }
+            }
+        }*/
+
+        // Seems the speed required to get a reply is too high for the browser
+        // so reply check is not implemented for now
+        await new Promise(resolve => setTimeout(resolve, 30));
+        return Promise.resolve();
+    }
+
+    // Mouse move absolute
+    async MouseMoveAbsolute(xLSB, xMSB, yLSB, yMSB) {
+        if (!serialPort || !serialPort.readable || !serialPort.writable) {
+            return;
+        }
+        const packet = [
+            0x57, 0xAB, 0x00, 0x04, 0x07, 0x02,
+            this.hidState.MouseButtons,
+            xLSB,
+            xMSB,
+            yLSB,
+            yMSB,
+            0x00, // Scroll
+            0x00  // Checksum placeholder
+        ];
+        packet[12] = this.calcChecksum(packet.slice(0, 12));
+        await this.sendPacketAndWait(packet, 0x04);
+    }
+
+    // Mouse move relative
+    async MouseMoveRelative(dx, dy, wheel) {
+         if (!serialPort || !serialPort.readable || !serialPort.writable) {
+            return;
+        }
+        // Ensure 0x80 is not used
+        if (dx === 0x80) dx = 0x81;
+        if (dy === 0x80) dy = 0x81;
+        const packet = [
+            0x57, 0xAB, 0x00, 0x05, 0x05, 0x01,
+            this.hidState.MouseButtons,
+            dx,
+            dy,
+            wheel,
+            0x00 // Checksum placeholder
+        ];
+        packet[10] = this.calcChecksum(packet.slice(0, 10));
+        await this.sendPacketAndWait(packet, 0x05);
+    }
+
+    // Mouse button press
+    async MouseButtonPress(button) {
+        switch (button) {
+            case 0x01: // Left
+                this.hidState.MouseButtons |= 0x01;
+                break;
+            case 0x02: // Right
+                this.hidState.MouseButtons |= 0x02;
+                break;
+            case 0x03: // Middle
+                this.hidState.MouseButtons |= 0x04;
+                break;
+            default:
+                throw new Error("invalid opcode for mouse button press");
+        }
+        await this.MouseMoveRelative(0, 0, 0);
+    }
+
+    // Mouse button release
+    async MouseButtonRelease(button) {
+        switch (button) {
+            case 0x00: // Release all
+                this.hidState.MouseButtons = 0x00;
+                break;
+            case 0x01: // Left
+                this.hidState.MouseButtons &= ~0x01;
+                break;
+            case 0x02: // Right
+                this.hidState.MouseButtons &= ~0x02;
+                break;
+            case 0x03: // Middle
+                this.hidState.MouseButtons &= ~0x04;
+                break;
+            default:
+                throw new Error("invalid opcode for mouse button release");
+        }
+        await this.MouseMoveRelative(0, 0, 0);
+    }
+
+    // Mouse scroll
+    async MouseScroll(tilt) {
+        if (tilt === 0) return;
+        let wheel;
+        if (tilt < 0) {
+            wheel = this.Config.ScrollSensitivity;
+        } else {
+            wheel = 0xFF - this.Config.ScrollSensitivity;
+        }
+        await this.MouseMoveRelative(0, 0, wheel);
+    }
+
+    // --- Keyboard Emulation ---
+
+    // Set modifier key (Ctrl, Shift, Alt, GUI)
+    async SetModifierKey(keycode, isRight) {
+        const MOD_LCTRL = 0x01, MOD_LSHIFT = 0x02, MOD_LALT = 0x04, MOD_LGUI = 0x08;
+        const MOD_RCTRL = 0x10, MOD_RSHIFT = 0x20, MOD_RALT = 0x40, MOD_RGUI = 0x80;
+        let modifierBit = 0;
+        switch (keycode) {
+            case 17: modifierBit = isRight ? MOD_RCTRL : MOD_LCTRL; break;
+            case 16: modifierBit = isRight ? MOD_RSHIFT : MOD_LSHIFT; break;
+            case 18: modifierBit = isRight ? MOD_RALT : MOD_LALT; break;
+            case 91: modifierBit = isRight ? MOD_RGUI : MOD_LGUI; break;
+            default: throw new Error("Not a modifier key");
+        }
+        this.hidState.Modkey |= modifierBit;
+        await this.keyboardSendKeyCombinations();
+    }
+
+    // Unset modifier key (Ctrl, Shift, Alt, GUI)
+    async UnsetModifierKey(keycode, isRight) {
+        const MOD_LCTRL = 0x01, MOD_LSHIFT = 0x02, MOD_LALT = 0x04, MOD_LGUI = 0x08;
+        const MOD_RCTRL = 0x10, MOD_RSHIFT = 0x20, MOD_RALT = 0x40, MOD_RGUI = 0x80;
+        let modifierBit = 0;
+        switch (keycode) {
+            case 17: modifierBit = isRight ? MOD_RCTRL : MOD_LCTRL; break;
+            case 16: modifierBit = isRight ? MOD_RSHIFT : MOD_LSHIFT; break;
+            case 18: modifierBit = isRight ? MOD_RALT : MOD_LALT; break;
+            case 91: modifierBit = isRight ? MOD_RGUI : MOD_LGUI; break;
+            default: throw new Error("Not a modifier key");
+        }
+        this.hidState.Modkey &= ~modifierBit;
+        await this.keyboardSendKeyCombinations();
+    }
+
+    // Send a keyboard press by JavaScript keycode
+    async SendKeyboardPress(keycode) {
+        const hid = this.javaScriptKeycodeToHIDOpcode(keycode);
+        if (hid === 0x00) throw new Error("Unsupported keycode: " + keycode);
+        // Already pressed?
+        for (let i = 0; i < 6; i++) {
+            if (this.hidState.KeyboardButtons[i] === hid) return;
+        }
+        // Find empty slot
+        for (let i = 0; i < 6; i++) {
+            if (this.hidState.KeyboardButtons[i] === 0x00) {
+                this.hidState.KeyboardButtons[i] = hid;
+                await this.keyboardSendKeyCombinations();
+                return;
+            }
+        }
+        throw new Error("No space left in keyboard state to press key: " + keycode);
+    }
+
+    // Send a keyboard release by JavaScript keycode
+    async SendKeyboardRelease(keycode) {
+        const hid = this.javaScriptKeycodeToHIDOpcode(keycode);
+        if (hid === 0x00) throw new Error("Unsupported keycode: " + keycode);
+        for (let i = 0; i < 6; i++) {
+            if (this.hidState.KeyboardButtons[i] === hid) {
+                this.hidState.KeyboardButtons[i] = 0x00;
+                await this.keyboardSendKeyCombinations();
+                return;
+            }
+        }
+        // Not pressed, do nothing
+    }
+
+    // Send the current key combinations (modifiers + up to 6 keys)
+    async keyboardSendKeyCombinations() {
+        const packet = [
+            0x57, 0xAB, 0x00, 0x02, 0x08,
+            this.hidState.Modkey, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+            0x00
+        ];
+        for (let i = 0; i < 6; i++) {
+            packet[7 + i] = this.hidState.KeyboardButtons[i] || 0x00;
+        }
+        packet[13] = this.calcChecksum(packet.slice(0, 13));
+        await this.sendPacketAndWait(packet, 0x02);
+    }
+
+    // Convert JavaScript keycode to HID keycode
+    javaScriptKeycodeToHIDOpcode(keycode) {
+        // Letters A-Z
+        if (keycode >= 65 && keycode <= 90) return (keycode - 65) + 0x04;
+        // Numbers 1-9 (top row, not numpad)
+        if (keycode >= 49 && keycode <= 57) return (keycode - 49) + 0x1E;
+        // F1 to F12
+        if (keycode >= 112 && keycode <= 123) return (keycode - 112) + 0x3A;
+        switch (keycode) {
+            case 8: return 0x2A; // Backspace
+            case 9: return 0x2B; // Tab
+            case 13: return 0x28; // Enter
+            case 16: return 0xE1; // Left shift
+            case 17: return 0xE0; // Left Ctrl
+            case 18: return 0xE6; // Left Alt
+            case 19: return 0x48; // Pause
+            case 20: return 0x39; // Caps Lock
+            case 27: return 0x29; // Escape
+            case 32: return 0x2C; // Spacebar
+            case 33: return 0x4B; // Page Up
+            case 34: return 0x4E; // Page Down
+            case 35: return 0x4D; // End
+            case 36: return 0x4A; // Home
+            case 37: return 0x50; // Left Arrow
+            case 38: return 0x52; // Up Arrow
+            case 39: return 0x4F; // Right Arrow
+            case 40: return 0x51; // Down Arrow
+            case 44: return 0x46; // Print Screen or F13 (Firefox)
+            case 45: return 0x49; // Insert
+            case 46: return 0x4C; // Delete
+            case 48: return 0x27; // 0 (not Numpads)
+            case 59: return 0x33; // ';'
+            case 61: return 0x2E; // '='
+            case 91: return 0xE3; // Left GUI (Windows)
+            case 92: return 0xE7; // Right GUI
+            case 93: return 0x65; // Menu key
+            case 96: return 0x62; // 0 (Numpads)
+            case 97: return 0x59; // 1 (Numpads)
+            case 98: return 0x5A; // 2 (Numpads)
+            case 99: return 0x5B; // 3 (Numpads)
+            case 100: return 0x5C; // 4 (Numpads)
+            case 101: return 0x5D; // 5 (Numpads)
+            case 102: return 0x5E; // 6 (Numpads)
+            case 103: return 0x5F; // 7 (Numpads)
+            case 104: return 0x60; // 8 (Numpads)
+            case 105: return 0x61; // 9 (Numpads)
+            case 106: return 0x55; // * (Numpads)
+            case 107: return 0x57; // + (Numpads)
+            case 109: return 0x56; // - (Numpads)
+            case 110: return 0x63; // dot (Numpads)
+            case 111: return 0x54; // divide (Numpads)
+            case 144: return 0x53; // Num Lock
+            case 145: return 0x47; // Scroll Lock
+            case 146: return 0x58; // Numpad enter
+            case 173: return 0x2D; // -
+            case 186: return 0x33; // ';'
+            case 187: return 0x2E; // '='
+            case 188: return 0x36; // ','
+            case 189: return 0x2D; // '-'
+            case 190: return 0x37; // '.'
+            case 191: return 0x38; // '/'
+            case 192: return 0x35; // '`'
+            case 219: return 0x2F; // '['
+            case 220: return 0x31; // backslash
+            case 221: return 0x30; // ']'
+            case 222: return 0x34; // '\''
+            default: return 0x00;
+        }
+    }
+}
+
+// Instantiate HID controller
+const controller = new HIDController();
+const videoOverlayElement = document.getElementById('touchscreen');
+
+let isMouseDown = false;
+let lastX = 0;
+let lastY = 0;
+
+// Mouse down
+videoOverlayElement.addEventListener('mousedown', async (e) => {
+    isMouseDown = true;
+    lastX = e.clientX;
+    lastY = e.clientY;
+    if (e.button === 0) {
+        await controller.MouseButtonPress(0x01); // Left
+    } else if (e.button === 2) {
+        await controller.MouseButtonPress(0x02); // Right
+    } else if (e.button === 1) {
+        await controller.MouseButtonPress(0x03); // Middle
+    }
+});
+
+// Mouse up
+videoOverlayElement.addEventListener('mouseup', async (e) => {
+    isMouseDown = false;
+    if (e.button === 0) {
+        await controller.MouseButtonRelease(0x01); // Left
+    } else if (e.button === 2) {
+        await controller.MouseButtonRelease(0x02); // Right
+    } else if (e.button === 1) {
+        await controller.MouseButtonRelease(0x03); // Middle
+    }
+});
+
+// Mouse move (absolute positioning)
+videoOverlayElement.addEventListener('mousemove', async (e) => {
+    const rect = videoOverlayElement.getBoundingClientRect();
+    const x = e.clientX - rect.left;
+    const y = e.clientY - rect.top;
+    const width = rect.width;
+    const height = rect.height;
+    const offsetX = x / width;
+    const offsetY = y / height;
+    //console.log('Offset ratio:', { offsetX, offsetY });
+
+    const absX = Math.round(offsetX * 4095);
+    const absY = Math.round(offsetY * 4095);
+    await controller.MouseMoveAbsolute(absX & 0xFF, (absX >> 8) & 0xFF, absY & 0xFF, (absY >> 8) & 0xFF);
+});
+
+// Context menu disable (for right click)
+videoOverlayElement.addEventListener('contextmenu', (e) => {
+    e.preventDefault();
+});
+
+// Mouse wheel (scroll)
+videoOverlayElement.addEventListener('wheel', async (e) => {
+    e.preventDefault();
+    let tilt = e.deltaY > 0 ? 1 : -1;
+    await controller.MouseScroll(tilt);
+});
+
+// Keyboard events for HID emulation
+window.addEventListener('keydown', async (e) => {
+    // Ignore repeated events
+    //if (e.repeat) return;
+    try {
+        // Modifier keys
+        if (e.key === 'Control' || e.key === 'Shift' || e.key === 'Alt' || e.key === 'Meta') {
+            await controller.SetModifierKey(e.keyCode, e.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT);
+        } else {
+            await controller.SendKeyboardPress(e.keyCode);
+        }
+        e.preventDefault();
+    } catch (err) {
+        // Ignore unsupported keys
+    }
+});
+
+window.addEventListener('keyup', async (e) => {
+    try {
+        if (e.key === 'Control' || e.key === 'Shift' || e.key === 'Alt' || e.key === 'Meta') {
+            await controller.UnsetModifierKey(e.keyCode, e.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT);
+        } else {
+            await controller.SendKeyboardRelease(e.keyCode);
+        }
+        e.preventDefault();
+    } catch (err) {
+        // Ignore unsupported keys
+    }
+});
+
+document.getElementById('resetHIDBtn').addEventListener('click', async () => {
+    try {
+        await controller.softReset();
+        alert('HID soft reset sent.');
+    } catch (e) {
+        alert('Failed to reset HID: ' + e.message);
+    }
+});
+
+/* 
+    Audio Capture
+*/
+const audioSelect = document.getElementById('audioSource');
+const refreshAudioBtn = document.getElementById('refreshAudioSources');
+let currentAudioStream = null;
+
+// List audio input devices
+async function listAudioSources() {
+    const devices = await navigator.mediaDevices.enumerateDevices();
+    audioSelect.innerHTML = '';
+    devices
+        .filter(device => device.kind === 'audioinput')
+        .forEach(device => {
+            const option = document.createElement('option');
+            option.value = device.deviceId;
+            option.text = device.label || `Microphone ${audioSelect.length + 1}`;
+            audioSelect.appendChild(option);
+        });
+}
+
+// Start streaming selected audio source
+async function startAudioStream() {
+    if (currentAudioStream) {
+        currentAudioStream.getTracks().forEach(track => track.stop());
+    }
+    const deviceId = audioSelect.value;
+    try {
+        const stream = await navigator.mediaDevices.getUserMedia({
+            audio: { 
+                deviceId: deviceId ? { exact: deviceId } : undefined,
+                echoCancellation: false,
+                noiseSuppression: false,
+                autoGainControl: false,
+                sampleRate: 48000,
+                channelCount: 2
+            }
+        });
+        currentAudioStream = stream;
+
+        // Create audio element if not exists
+        let audioElem = document.getElementById('audioStream');
+        if (!audioElem) {
+            audioElem = document.createElement('audio');
+            audioElem.id = 'audioStream';
+            audioElem.autoplay = true;
+            audioElem.controls = true;
+            audioElem.style.position = 'fixed';
+            audioElem.style.bottom = '10px';
+            audioElem.style.left = '10px';
+            audioElem.style.zIndex = 1001;
+            document.body.appendChild(audioElem);
+            audioElem.style.display = 'none';
+        }
+        audioElem.srcObject = stream;
+    } catch (err) {
+        alert('Error accessing audio device: ' + err.message);
+    }
+}
+
+// Event listeners
+refreshAudioBtn.addEventListener('click', listAudioSources);
+audioSelect.addEventListener('change', startAudioStream);
+
+// Initial population
+listAudioSources().then(startAudioStream);
+
+/*
+    Video Captures
+
+    The following section handles HDMI capture via connected webcams.
+*/
+async function ensureCameraPermission() {
+    try {
+        // Request permission to access the camera to get device labels
+        await navigator.mediaDevices.getUserMedia({ video: true });
+    } catch (e) {
+        alert('Unable to access camera');
+    }
+}
+
+async function getCameras() {
+    const devices = await navigator.mediaDevices.enumerateDevices();
+    const videoSelect = document.getElementById('videoSource');
+    videoSelect.innerHTML = '';
+    devices.forEach(device => {
+        if (device.kind === 'videoinput') {
+            const option = document.createElement('option');
+            option.value = device.deviceId;
+            option.text = device.label || `Camera ${videoSelect.length + 1}`;
+            videoSelect.appendChild(option);
+        }
+    });
+}
+
+async function startStream() {
+    const videoSelect = document.getElementById('videoSource');
+    const deviceId = videoSelect.value;
+    if (window.currentStream) {
+        window.currentStream.getTracks().forEach(track => track.stop());
+    }
+    const constraints = {
+        video: {
+            deviceId: { exact: deviceId },
+            width: { ideal: 1920 },
+            height: { ideal: 1080 }
+        }
+    };
+    try {
+        const stream = await navigator.mediaDevices.getUserMedia(constraints);
+        document.getElementById('video').srcObject = stream;
+        window.currentStream = stream;
+
+        // Resize touchscreen overlay after a short delay to ensure video is loaded
+        setTimeout(resizeTouchscreenToVideo, 500);
+    } catch (e) {
+        alert('Unable to access camera');
+    }
+}
+
+document.getElementById('videoSource').addEventListener('change', startStream);
+
+document.getElementById('fullscreenBtn').addEventListener('click', () => {
+    if (
+        document.fullscreenElement ||
+        document.webkitFullscreenElement ||
+        document.mozFullScreenElement ||
+        document.msFullscreenElement
+    ) {
+        if (document.exitFullscreen) {
+            document.exitFullscreen();
+        } else if (document.webkitExitFullscreen) {
+            document.webkitExitFullscreen();
+        } else if (document.mozCancelFullScreen) {
+            document.mozCancelFullScreen();
+        } else if (document.msExitFullscreen) {
+            document.msExitFullscreen();
+        }
+        document.querySelector('#fullscreenBtn span').className = 'ts-icon is-maximize-icon';
+        
+    } else {
+        if (document.body.requestFullscreen) {
+            document.body.requestFullscreen();
+        } else if (document.body.webkitRequestFullscreen) {
+            document.body.webkitRequestFullscreen();
+        } else if (document.body.mozRequestFullScreen) {
+            document.body.mozRequestFullScreen();
+        } else if (document.body.msRequestFullscreen) {
+            document.body.msRequestFullscreen();
+        }
+        document.querySelector('#fullscreenBtn span').className = 'ts-icon is-minimize-icon';
+        
+    }
+});
+
+document.getElementById('refreshCameras').addEventListener('click', async () => {
+    await getCameras();
+    await startStream();
+});
+
+// Ensure permission, then populate cameras and start stream
+ensureCameraPermission().then(() => {
+    getCameras().then(startStream);
+});
+
+navigator.mediaDevices.addEventListener('devicechange', () => {
+    getCameras().then(startStream);
+});
+
+

BIN
usbkvm-app/www/tocas/NotoSansTC-VariableFont_wght.ttf


File diff suppressed because it is too large
+ 4 - 0
usbkvm-app/www/tocas/flags/1x1/ad.svg


+ 6 - 0
usbkvm-app/www/tocas/flags/1x1/ae.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ae">
+  <path fill="#00732f" d="M0 0h512v170.667H0z"/>
+  <path fill="#fff" d="M0 170.667h512v170.667H0z"/>
+  <path d="M0 341.333h512V512H0z"/>
+  <path fill="red" d="M0 0h180v512H0z"/>
+</svg>

File diff suppressed because it is too large
+ 68 - 0
usbkvm-app/www/tocas/flags/1x1/af.svg


+ 14 - 0
usbkvm-app/www/tocas/flags/1x1/ag.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ag">
+  <defs>
+    <clipPath id="a">
+      <path fill="#25ff01" d="M108.95 47.6h464.86v464.86H108.95z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" fill-rule="evenodd" transform="translate(-120 -52.427) scale(1.1014)">
+    <path fill="#fff" d="M0 47.6h693V512H0z"/>
+    <path d="M1.53 48.16h690.83v196.2H1.53z"/>
+    <path fill="#0061ff" d="M128.29 232.12h458.52v103.35H128.29z"/>
+    <path d="M692.53 49.19v463.27H346.86L692.53 49.19zm-691.34 0v463.27h345.67L1.19 49.19z" fill="#e20000"/>
+    <path d="M508.78 232.22l-69.285-17.58 58.944-44.467-72.388 10.34 37.228-63.08-64.115 37.23L410.54 81.24l-43.432 57.91-17.58-67.217-19.648 69.285-43.433-58.944 12.41 75.49-64.115-39.296 37.228 63.08-70.32-11.375 57.91 43.433-72.387 18.614h321.61z" fill="#ffd600"/>
+  </g>
+</svg>

+ 767 - 0
usbkvm-app/www/tocas/flags/1x1/ai.svg

@@ -0,0 +1,767 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ai">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)">
+    <path fill-rule="evenodd" fill="#fff" d="M-167.86.45h429.52v256.07h-429.52z"/>
+    <path d="M-167.86.45l-.018 19.22 102.5 63.22 38.565 1.34L-167.863.45z" fill="#c00"/>
+    <path d="M-123.97.45L.29 78.366V.45h-124.26z" fill="#006"/>
+    <path d="M16.866.45v99.468h-184.73v56.84h184.73v99.467h56.84v-99.468h184.73v-56.84H73.705V.45h-56.84z" fill="#c00"/>
+    <path d="M90.283.45v73.417L211.853 1.02 90.283.45z" fill="#006"/>
+    <path d="M94.12 81.87l34.19-.33L261.13 1.02l-35.24.688L94.12 81.87z" fill="#c00"/>
+    <path d="M259.78 22.495L158.32 82.89l100.11.45v89.995h-85.258l84.47 54.942 1.24 27.948-45.117-.647-123.48-72.77v73.417H.29v-73.417l-115.83 73.22-52.315.197v255.78h852.58V.455l-424.04-.46m-428.54 28.87l-.45 53.12 89.757 1.35-89.307-54.472zm-.005 144.465v54.47l85.258-53.9-85.258-.57z" fill="#006"/>
+    <path d="M160.45 175.58l-35.543-.33 133.97 80.07-.88-18.318-97.55-61.422zm-295.02 81.09L-8.95 177.5l-32.994.262-125.92 78.79" fill="#c00"/>
+    <path d="M368.61 245.108l2.165 2.166-2.165-2.166z" fill="#49497d"/>
+    <path d="M370.775 245.108l2.166 2.166-2.165-2.166z" fill="#0e0e6e"/>
+    <path d="M364.28 247.274l2.164 2.165-2.165-2.166z" fill="#262678"/>
+    <path d="M366.444 247.274l2.166 2.165-2.166-2.166z" fill="#808067"/>
+    <path d="M372.94 247.274l2.166 2.165-2.165-2.166z" fill="#58587b"/>
+    <path d="M292.817 249.44l2.166 2.165-2.166-2.166z" fill="#0e0e6e"/>
+    <path d="M359.948 249.44l2.165 2.165-2.165-2.166z" fill="#1b1b74"/>
+    <path d="M362.113 249.44l2.166 2.165-2.167-2.166z" fill="#6e6c70"/>
+    <path d="M296.628 253.36c0 55.95-6.45 119.004 35.255 162.823 8.58 9.014 24.9 29.572 38.892 28.783 14.647-.825 33.483-22.5 41.86-33.114 36.304-47.754 30.533-104.713 31.767-160.14-16.393 7.363-24.557 9.788-38.892 9.745-10.618 1.09-26.998-6.045-36.792-10.714-6.4 4.275-15.687 9.373-32.374 9.945-19.273.848-25.38-2.418-39.716-7.33z" fill="#cc3"/>
+    <path d="M375.106 249.44l2.166 2.165-2.166-2.166z" fill="#99994e"/>
+    <path d="M377.272 249.44l2.165 2.165-2.165-2.166z" fill="#49497d"/>
+    <path d="M444.402 249.44l2.166 2.165-2.166-2.166z" fill="#0e0e6e"/>
+    <path d="M294.983 251.605l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
+    <path d="M297.148 251.605l2.166 2.165-2.166-2.165z" fill="#6e6c70"/>
+    <path d="M299.314 251.605l2.165 2.165-2.166-2.165z" fill="#3a3a7c"/>
+    <path d="M355.617 251.605l2.165 2.165-2.165-2.165z" fill="#1b1b74"/>
+    <path d="M357.782 251.605l2.166 2.165-2.166-2.165z" fill="#6e6c70"/>
+    <path d="M359.948 251.605l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
+    <path d="M368.61 251.605l2.165 2.165-2.165-2.165z" fill="#d0d045"/>
+    <path d="M377.272 251.605l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
+    <path d="M379.437 251.605l2.166 2.165-2.166-2.165z" fill="#8d8d5b"/>
+    <path d="M381.603 251.605l2.165 2.165-2.165-2.165z" fill="#3a3a7c"/>
+    <path d="M437.906 251.605l2.165 2.165-2.164-2.165z" fill="#262678"/>
+    <path d="M440.07 251.605l2.167 2.165-2.166-2.165z" fill="#53527c"/>
+    <path d="M442.237 251.605l2.165 2.165-2.165-2.165z" fill="#8d8d5b"/>
+    <path d="M303.645 253.77l2.165 2.166-2.165-2.166z" fill="#737370"/>
+    <path d="M305.81 253.77l2.166 2.166-2.166-2.166z" fill="#53527c"/>
+    <path d="M307.976 253.77l2.165 2.166-2.164-2.166z" fill="#1b1b74"/>
+    <path d="M351.286 253.77l2.165 2.166-2.164-2.166z" fill="#262678"/>
+    <path d="M353.45 253.77l2.167 2.166-2.166-2.166z" fill="#6e6c70"/>
+    <path d="M355.617 253.77l2.165 2.166-2.165-2.166z" fill="#a4a43d"/>
+    <path d="M366.444 253.77l2.166 2.166-2.166-2.166z" fill="#e5e59d"/>
+    <path d="M301.068 259.444c-1.165 29.392-.27 62.49 4.324 93.94 5.08 16.43 4.4 25.454 11.95 35.3l105.67-.822c6.368-10.36 11.09-26.068 11.7-32.313 5.9-31.763 6.04-66.814 6.182-98.164-10.626 5.65-24.542 9.652-38.048 7.895-10.827-.824-20.832-3.296-32.482-9.88-10.107 6.054-13.63 8.818-30.317 9.525-12.993.64-23.518 1.693-38.98-5.482z" fill="#fff"/>
+    <path d="M370.775 253.77l2.166 2.166-2.165-2.166z" fill="#f2f1d7"/>
+    <path d="M372.94 253.77l2.166 2.166-2.165-2.166z" fill="#d9d868"/>
+    <path d="M381.603 253.77l2.165 2.166-2.165-2.166z" fill="#a4a43d"/>
+    <path d="M383.768 253.77l2.166 2.166-2.166-2.166z" fill="#99994e"/>
+    <path d="M385.934 253.77l2.165 2.166-2.166-2.166z" fill="#49497d"/>
+    <path d="M388.1 253.77l2.165 2.166-2.166-2.166z" fill="#0e0e6e"/>
+    <path d="M431.41 253.77l2.165 2.166-2.166-2.166z" fill="#3a3a7c"/>
+    <path d="M433.575 253.77l2.165 2.166-2.165-2.166z" fill="#667"/>
+    <path d="M435.74 253.77l2.166 2.166-2.166-2.166z" fill="#99994e"/>
+    <path d="M437.906 253.77l2.165 2.166-2.164-2.166m-129.93 2.166l2.165 2.165-2.164-2.164z" fill="#a4a43d"/>
+    <path d="M310.14 255.936l2.167 2.165-2.166-2.164z" fill="#99994e"/>
+    <path d="M312.307 255.936l2.165 2.165-2.165-2.164z" fill="#6e6c70"/>
+    <path d="M314.472 255.936l2.166 2.165-2.166-2.164z" fill="#49497d"/>
+    <path d="M316.638 255.936l2.165 2.165-2.165-2.164m28.15 0l2.167 2.165-2.166-2.164z" fill="#1b1b74"/>
+    <path d="M346.955 255.936l2.165 2.165-2.165-2.164z" fill="#53527c"/>
+    <path d="M349.12 255.936l2.166 2.165-2.166-2.164z" fill="#8d8d5b"/>
+    <path d="M351.286 255.936l2.165 2.165-2.164-2.164z" fill="#a4a43d"/>
+    <path d="M362.113 255.936l2.166 2.165-2.167-2.164z" fill="#e5e59d"/>
+    <path d="M364.28 255.936l2.164 2.165-2.165-2.164z" fill="#fbfaf2"/>
+    <path d="M375.106 255.936l2.166 2.165-2.166-2.164z" fill="#f2f1d2"/>
+    <path d="M377.272 255.936l2.165 2.165-2.165-2.164z" fill="#d9d868"/>
+    <path d="M388.1 255.936l2.165 2.165-2.166-2.164z" fill="#a4a43d"/>
+    <path d="M390.265 255.936l2.165 2.165-2.165-2.164z" fill="#6e6c70"/>
+    <path d="M392.43 255.936l2.166 2.165-2.166-2.164z" fill="#3a3a7c"/>
+    <path d="M420.582 255.936l2.165 2.165-2.165-2.164z" fill="#0e0e6e"/>
+    <path d="M422.747 255.936l2.166 2.165-2.166-2.164z" fill="#32327b"/>
+    <path d="M424.913 255.936l2.165 2.165-2.165-2.164z" fill="#58587b"/>
+    <path d="M427.078 255.936l2.166 2.165-2.166-2.164z" fill="#808067"/>
+    <path d="M430.694 256.65l1.443.722-1.443-.722z" fill="#a4a43d"/>
+    <path d="M299.314 258.1l2.165 2.167-2.166-2.166z" fill="#dddc7a"/>
+    <path d="M301.48 258.1l2.165 2.167-2.166-2.166z" fill="#d0d045"/>
+    <path d="M318.088 258.816l1.443.722-1.442-.722z" fill="#a4a43d"/>
+    <path d="M320.97 258.1l2.164 2.167-2.165-2.166z" fill="#808067"/>
+    <path d="M323.134 258.1l2.166 2.167-2.166-2.166z" fill="#667"/>
+    <path d="M325.3 258.1l2.165 2.167-2.165-2.166z" fill="#58587b"/>
+    <path d="M327.465 258.1l2.166 2.167-2.165-2.166z" fill="#49497d"/>
+    <path d="M340.458 258.1l2.166 2.167-2.166-2.166z" fill="#737370"/>
+    <path d="M342.624 258.1l2.165 2.167-2.166-2.166z" fill="#99994e"/>
+    <path d="M344.79 258.1l2.165 2.167-2.166-2.166z" fill="#a4a43d"/>
+    <path d="M357.782 258.1l2.166 2.167-2.166-2.166z" fill="#e5e59d"/>
+    <path d="M359.948 258.1l2.165 2.167-2.165-2.166z" fill="#fbfaf2"/>
+    <path d="M379.437 258.1l2.166 2.167-2.166-2.166z" fill="#f2f1d2"/>
+    <path d="M381.603 258.1l2.165 2.167-2.165-2.166z" fill="#d9d868"/>
+    <path d="M393.88 258.816l1.443.722-1.442-.722z" fill="#a4a43d"/>
+    <path d="M396.76 258.1l2.167 2.167-2.166-2.166z" fill="#808067"/>
+    <path d="M398.927 258.1l2.165 2.167-2.165-2.166z" fill="#667"/>
+    <path d="M401.092 258.1l2.166 2.167-2.166-2.166z" fill="#58587b"/>
+    <path d="M403.258 258.1l2.165 2.167-2.165-2.166z" fill="#3a3a7c"/>
+    <path d="M413.37 258.816l1.443.722-1.443-.722z" fill="#58587b"/>
+    <path d="M416.25 258.1l2.166 2.167-2.165-2.166z" fill="#737370"/>
+    <path d="M418.416 258.1l2.166 2.167-2.166-2.166z" fill="#99994e"/>
+    <path d="M420.582 258.1l2.165 2.167-2.165-2.166z" fill="#a4a43d"/>
+    <path d="M437.906 258.1l2.165 2.167-2.164-2.166z" fill="#dddc7a"/>
+    <path d="M440.07 258.1l2.167 2.167-2.166-2.166z" fill="#d0d045"/>
+    <path d="M303.645 260.267l2.165 2.165-2.165-2.165z" fill="#f2f1d7"/>
+    <path d="M305.81 260.267l2.166 2.165-2.166-2.165z" fill="#e0dea1"/>
+    <path d="M307.976 260.267l2.165 2.165-2.164-2.165z" fill="#dddc7a"/>
+    <path d="M351.286 260.267l2.165 2.165-2.164-2.165z" fill="#d9d868"/>
+    <path d="M353.45 260.267l2.167 2.165-2.166-2.165z" fill="#e5e3af"/>
+    <path d="M383.768 260.267l2.166 2.165-2.166-2.165z" fill="#f6f6e4"/>
+    <path d="M385.934 260.267l2.165 2.165-2.166-2.165z" fill="#e1e18c"/>
+    <path d="M429.244 260.267l2.165 2.165-2.166-2.165z" fill="#d4d456"/>
+    <path d="M431.41 260.267l2.165 2.165-2.166-2.165z" fill="#e1e18c"/>
+    <path d="M433.575 260.267l2.165 2.165-2.165-2.165z" fill="#eeedc1"/>
+    <path d="M312.307 262.432l2.165 2.166-2.165-2.166z" fill="#f2f1d2"/>
+    <path d="M314.472 262.432l2.166 2.166-2.166-2.166z" fill="#e0dea1"/>
+    <path d="M316.638 262.432l2.165 2.166-2.165-2.166z" fill="#dddc7a"/>
+    <path d="M318.803 262.432l2.166 2.166-2.167-2.166z" fill="#d0d045"/>
+    <path d="M344.79 262.432l2.165 2.166-2.166-2.166z" fill="#dddc7a"/>
+    <path d="M346.955 262.432l2.165 2.166-2.165-2.166z" fill="#e5e3af"/>
+    <path d="M349.12 262.432l2.166 2.166-2.166-2.166z" fill="#f6f6e4"/>
+    <path d="M390.265 262.432l2.165 2.166-2.165-2.166z" fill="#eeedc1"/>
+    <path d="M392.43 262.432l2.166 2.166-2.166-2.166z" fill="#e1e18c"/>
+    <path d="M394.596 262.432l2.165 2.166-2.164-2.166z" fill="#d4d456"/>
+    <path d="M420.582 262.432l2.165 2.166-2.165-2.166z" fill="#d9d868"/>
+    <path d="M422.747 262.432l2.166 2.166-2.166-2.166z" fill="#e1e18c"/>
+    <path d="M424.913 262.432l2.165 2.166-2.165-2.166z" fill="#eeedc1"/>
+    <path d="M427.078 262.432l2.166 2.166-2.166-2.166z" fill="#f6f6e4"/>
+    <path d="M323.134 264.598l2.166 2.165-2.166-2.165z" fill="#f2f1d7"/>
+    <path d="M325.3 264.598l2.165 2.165-2.165-2.165z" fill="#f2f1d2"/>
+    <path d="M327.465 264.598l2.166 2.165-2.165-2.165z" fill="#eeedc1"/>
+    <path d="M337.578 265.312l1.442.722-1.442-.722z" fill="#f2f1d2"/>
+    <path d="M340.458 264.598l2.166 2.165-2.166-2.165z" fill="#fbfaf2"/>
+    <path d="M351.286 264.598l4.33 4.33v-4.33h-4.33z" fill="#fef8f1"/>
+    <path d="M398.927 264.598l2.165 2.165-2.165-2.165z" fill="#f2f1d7"/>
+    <path d="M401.092 264.598l2.166 2.165-2.166-2.165z" fill="#f2f1d2"/>
+    <path d="M403.258 264.598l2.165 2.165-2.165-2.165z" fill="#e5e3af"/>
+    <path d="M406.874 265.312l1.442.722-1.442-.722z" fill="#e5e59d"/>
+    <path d="M409.754 264.598l2.166 2.165-2.166-2.165z" fill="#e0dea1"/>
+    <path d="M413.37 265.312l1.443.722-1.443-.722z" fill="#f2f1d2"/>
+    <path d="M416.25 264.598l2.166 2.165-2.165-2.165z" fill="#fbfaf2"/>
+    <path d="M346.955 266.763l2.165 2.166-2.165-2.167z" fill="#fef8f1"/>
+    <path d="M349.12 266.763l2.166 2.166-2.166-2.167z" fill="#fbbe66"/>
+    <path d="M346.955 268.93l2.165 2.164-2.165-2.165z" fill="#fbc477"/>
+    <path d="M351.286 268.93l2.165 2.164-2.164-2.165z" fill="#fcb144"/>
+    <path d="M346.955 271.094l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M351.286 271.094l2.165 2.166-2.164-2.166z" fill="#fea522"/>
+    <path d="M344.79 273.26l2.165 2.165-2.166-2.165m8.66 0l2.167 2.165-2.166-2.165z" fill="#fae3c9"/>
+    <path d="M364.28 273.26l2.164 2.165-2.165-2.165z" fill="#fbead6"/>
+    <path d="M366.444 273.26l2.166 2.165-2.166-2.165z" fill="#f9d6aa"/>
+    <path d="M375.106 273.26l2.166 2.165-2.166-2.165z" fill="#fae3c9"/>
+    <path d="M377.272 273.26l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
+    <path d="M344.79 275.425l2.165 2.166-2.166-2.165z" fill="#f9d099"/>
+    <path d="M353.45 275.425l2.167 2.166-2.166-2.165z" fill="#fdab33"/>
+    <path d="M357.782 275.425l2.166 2.166-2.166-2.165z" fill="#fcf1e4"/>
+    <path d="M359.948 275.425l2.165 2.166-2.165-2.165z" fill="#fbc477"/>
+    <path d="M362.113 275.425l2.166 2.166-2.167-2.165z" fill="#fea522"/>
+    <path d="M379.437 275.425l2.166 2.166-2.166-2.165z" fill="#fcb755"/>
+    <path d="M381.603 275.425l2.165 2.166-2.165-2.165z" fill="#f9d6aa"/>
+    <path d="M344.79 277.59l2.165 2.166-2.166-2.165z" fill="#faca88"/>
+    <path d="M355.617 277.59l2.165 2.166-2.165-2.165m28.15 0l2.167 2.166-2.166-2.165z" fill="#fea522"/>
+    <path d="M385.934 277.59l2.165 2.166-2.166-2.165z" fill="#f8dcbb"/>
+    <path d="M299.314 279.756l2.165 2.166-2.166-2.166z" fill="#f6f6e4"/>
+    <path d="M344.79 279.756l2.165 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M388.1 279.756l2.165 2.166-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M390.265 279.756l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
+    <path d="M344.79 281.922l2.165 2.165-2.166-2.165z" fill="#faca88"/>
+    <path d="M394.596 281.922l2.165 2.165-2.164-2.165z" fill="#fcb755"/>
+    <path d="M396.76 281.922l2.167 2.165-2.166-2.165z" fill="#f8dcbb"/>
+    <path d="M342.624 284.087l2.165 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M344.79 284.087l2.165 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M405.423 284.087l2.166 2.166-2.167-2.166z" fill="#fdab33"/>
+    <path d="M407.59 284.087l2.164 2.166-2.165-2.166z" fill="#fcb144"/>
+    <path d="M409.754 284.087l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M411.92 284.087l4.33 4.33-4.33-4.33z" fill="#f9d6aa"/>
+    <path d="M414.085 284.087l2.166 2.166-2.165-2.166z" fill="#fef8f1"/>
+    <path d="M342.624 286.253l2.165 2.165-2.166-2.165z" fill="#fcb144"/>
+    <path d="M372.94 286.253l2.166 2.165-2.165-2.165z" fill="#fdab33"/>
+    <path d="M375.106 286.253l2.166 2.165-2.166-2.165zm8.662 0l2.166 2.165-2.166-2.165z" fill="#fbc477"/>
+    <path d="M385.934 286.253l2.165 2.165-2.166-2.165z" fill="#fea522"/>
+    <path d="M340.458 288.418l2.166 2.166-2.166-2.166z" fill="#fae3c9"/>
+    <path d="M368.61 288.418l2.165 2.166-2.165-2.166z" fill="#fcb144"/>
+    <path d="M370.775 288.418l2.166 2.166-2.165-2.166z" fill="#fae3c9"/>
+    <path d="M388.1 288.418l2.165 2.166-2.166-2.166z" fill="#f8dcbb"/>
+    <path d="M390.265 288.418l2.165 2.166-2.165-2.166z" fill="#fdab33"/>
+    <path d="M403.258 288.418l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M405.423 288.418l2.166 2.166-2.167-2.166z" fill="#fcb755"/>
+    <path d="M407.59 288.418l2.164 2.166-2.165-2.166z" fill="#f9d099"/>
+    <path d="M409.754 288.418l2.166 2.166-2.166-2.166z" fill="#fbead6"/>
+    <path d="M340.458 290.584l2.166 2.165-2.166-2.166z" fill="#fcb144"/>
+    <path d="M366.444 290.584l2.166 2.165-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M392.43 290.584l2.166 2.165-2.166-2.166z" fill="#f9d099"/>
+    <path d="M401.092 290.584l2.166 2.165-2.166-2.166z" fill="#fbead6"/>
+    <path d="M338.293 292.75l2.165 2.165-2.165-2.166z" fill="#fcf1e4"/>
+    <path d="M364.28 292.75l2.164 2.165-2.165-2.166z" fill="#fbbe66"/>
+    <path d="M394.596 292.75l2.165 2.165-2.164-2.166z" fill="#f9d099"/>
+    <path d="M401.092 292.75l2.166 2.165-2.166-2.166z" fill="#fae3c9"/>
+    <path d="M338.293 294.915l2.165 2.165-2.165-2.165z" fill="#fbc477"/>
+    <path d="M362.113 294.915l2.166 2.165-2.167-2.165m34.648 0l2.167 2.165-2.166-2.165z" fill="#fcb144"/>
+    <path d="M401.092 294.915l2.166 2.165-2.166-2.165z" fill="#fbbe66"/>
+    <path d="M299.314 297.08l2.165 2.166-2.166-2.166z" fill="#f6f6e4"/>
+    <path d="M338.293 297.08l2.165 2.166-2.165-2.166z" fill="#fea522"/>
+    <path d="M362.113 297.08l2.166 2.166-2.167-2.166z" fill="#fbead6"/>
+    <path d="M396.76 297.08l2.167 2.166-2.166-2.166z" fill="#fcf1e4"/>
+    <path d="M403.258 297.08l2.165 2.166-2.165-2.166z" fill="#fef8f1"/>
+    <path d="M336.127 299.246l2.166 2.165-2.166-2.164z" fill="#fcf1e4"/>
+    <path d="M359.948 299.246l2.165 2.165-2.165-2.164z" fill="#fbbe66"/>
+    <path d="M398.927 299.246l2.165 2.165-2.165-2.164z" fill="#faca88"/>
+    <path d="M403.258 299.246l2.165 2.165-2.165-2.164z" fill="#f9d099"/>
+    <path d="M336.127 301.41l2.166 2.167-2.166-2.166z" fill="#f9d6aa"/>
+    <path d="M359.948 301.41l2.165 2.167-2.165-2.166z" fill="#fcf1e4"/>
+    <path d="M370.775 301.41l2.166 2.167-2.165-2.166z" fill="#fae3c9"/>
+    <path d="M372.94 301.41l2.166 2.167-2.165-2.166z" fill="#fea522"/>
+    <path d="M375.106 301.41l2.166 2.167-2.166-2.166z" fill="#fcb144"/>
+    <path d="M377.272 301.41l2.165 2.167-2.165-2.166z" fill="#f9d6aa"/>
+    <path d="M398.927 301.41l2.165 2.167-2.165-2.166z" fill="#fef8f1"/>
+    <path d="M401.092 301.41l2.166 2.167-2.166-2.166z" fill="#fea522"/>
+    <path d="M403.258 301.41l2.165 2.167-2.165-2.166z" fill="#fdab33"/>
+    <path d="M336.127 303.577l-2.165 6.496 2.165-6.496z" fill="#faca88"/>
+    <path d="M357.782 303.577l2.166 2.165-2.166-2.165z" fill="#fea522"/>
+    <path d="M359.948 303.577l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
+    <path d="M370.775 303.577l2.166 2.165-2.165-2.165z" fill="#f9d099"/>
+    <path d="M379.437 303.577l2.166 2.165-2.166-2.165z" fill="#fdab33"/>
+    <path d="M381.603 303.577l2.165 2.165-2.165-2.165z" fill="#fae3c9"/>
+    <path d="M401.092 303.577l2.166 2.165-2.166-2.165z" fill="#f8dcbb"/>
+    <path d="M403.258 303.577l2.165 2.165-2.165-2.165z" fill="#f90"/>
+    <path d="M406.138 305.027l.723 1.444-.722-1.443z" fill="#fbead6"/>
+    <path d="M362.113 305.742l2.166 2.166-2.167-2.166z" fill="#fea522"/>
+    <path d="M364.28 305.742l2.164 2.166-2.165-2.166z" fill="#fbbe66"/>
+    <path d="M366.444 305.742l2.166 2.166-2.166-2.166z" fill="#faca88"/>
+    <path d="M368.61 305.742l2.165 2.166-2.165-2.166z" fill="#fcb144"/>
+    <path d="M370.775 305.742l2.166 2.166-2.165-2.166z" fill="#fae3c9"/>
+    <path d="M372.94 305.742l2.166 2.166-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M383.768 305.742l2.166 2.166-2.166-2.166z" fill="#fdab33"/>
+    <path d="M385.934 305.742l2.165 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M388.1 305.742l2.165 2.166-2.166-2.166z" fill="#faca88"/>
+    <path d="M390.265 305.742l2.165 2.166-2.165-2.166z" fill="#f9d6aa"/>
+    <path d="M393.88 306.457l1.443.722-1.442-.723z" fill="#fae3c9"/>
+    <path d="M396.76 305.742l2.167 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M403.258 305.742l2.165 2.166-2.165-2.166z" fill="#fbc477"/>
+    <path d="M310.14 307.908l2.167 2.165-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M312.307 307.908l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
+    <path d="M368.61 307.908l2.165 2.165-2.165-2.165z" fill="#fcb755"/>
+    <path d="M372.94 307.908l2.166 2.165-2.165-2.165z" fill="#fbead6"/>
+    <path d="M375.106 307.908l2.166 2.165-2.166-2.165z" fill="#fea522"/>
+    <path d="M392.43 307.908l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M394.596 307.908l-2.166 4.33 2.166-4.33z" fill="#fcb144"/>
+    <path d="M398.927 307.908l2.165 2.165-2.165-2.165z" fill="#fe9f11"/>
+    <path d="M401.092 307.908l2.166 2.165-2.166-2.165z" fill="#fbbe66"/>
+    <path d="M403.258 307.908l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
+    <path d="M310.14 310.073l2.167 2.166-2.166-2.167z" fill="#fae3c9"/>
+    <path d="M312.307 310.073l4.33 4.33-4.33-4.33z" fill="#fe9f11"/>
+    <path d="M314.472 310.073l2.166 2.166-2.166-2.167zm19.49 0l2.165 2.166-2.165-2.167z" fill="#fbead6"/>
+    <path d="M336.127 310.073l2.166 2.166-2.166-2.167z" fill="#fae3c9"/>
+    <path d="M355.617 310.073l2.165 2.166-2.165-2.167z" fill="#fe9f11"/>
+    <path d="M357.782 310.073l2.166 2.166-2.166-2.167z" fill="#fbc477"/>
+    <path d="M359.948 310.073l2.165 2.166-2.165-2.167z" fill="#fea522"/>
+    <path d="M366.444 310.073l2.166 2.166-2.166-2.167z" fill="#fbc477"/>
+    <path d="M368.61 310.073l2.165 2.166-2.165-2.167z" fill="#fef8f1"/>
+    <path d="M377.272 310.073l2.165 2.166-2.165-2.167z" fill="#fbc477"/>
+    <path d="M394.596 310.073l2.165 2.166-2.164-2.167z" fill="#fff"/>
+    <path d="M396.76 310.073l2.167 2.166-2.166-2.167z" fill="#fdab33"/>
+    <path d="M405.423 310.073l2.166 2.166-2.167-2.167z" fill="#fbc477"/>
+    <path d="M310.14 312.24l2.167 2.164-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M316.638 312.24l2.165 2.164-2.165-2.165z" fill="#fbead6"/>
+    <path d="M327.465 312.24l2.166 2.164-2.165-2.165z" fill="#f9d6aa"/>
+    <path d="M338.293 312.24l2.165 2.164-2.165-2.165z" fill="#fe9f11"/>
+    <path d="M341.91 312.953l1.44.722-1.44-.722z" fill="#f9d6aa"/>
+    <path d="M355.617 312.24l2.165 2.164-2.165-2.165z" fill="#f8dcbb"/>
+    <path d="M362.113 312.24l2.166 2.164-2.167-2.165z" fill="#fcf1e4"/>
+    <path d="M379.437 312.24l2.166 2.164-2.166-2.165z" fill="#f9d6aa"/>
+    <path d="M394.596 312.24l2.165 2.164-2.164-2.165z" fill="#fdab33"/>
+    <path d="M407.59 312.24l2.164 2.164-2.165-2.165z" fill="#fcb755"/>
+    <path d="M409.754 312.24l2.166 2.164-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M292.817 314.404l2.166 2.166-2.166-2.166z" fill="#53527c"/>
+    <path d="M312.307 314.404l2.165 2.166-2.165-2.166z" fill="#fcb755"/>
+    <path d="M316.638 314.404l2.165 2.166-2.165-2.166z" fill="#fea522"/>
+    <path d="M325.3 314.404l2.165 2.166-2.165-2.166z" fill="#fbead6"/>
+    <path d="M329.63 314.404l2.166 2.166-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M331.796 314.404l2.166 2.166-2.166-2.166z" fill="#fcf1e4"/>
+    <path d="M338.293 314.404l2.165 2.166-2.165-2.166z" fill="#fbbe66"/>
+    <path d="M340.458 314.404l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M342.624 314.404l2.165 2.166-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M353.45 314.404l2.167 2.166-2.166-2.166z" fill="#fea522"/>
+    <path d="M381.603 314.404l2.165 2.166-2.165-2.166z" fill="#f9d6aa"/>
+    <path d="M409.754 314.404l2.166 2.166-2.166-2.166z" fill="#fcb144"/>
+    <path d="M444.402 314.404l2.166 2.166-2.166-2.166z" fill="#8d8d5b"/>
+    <path d="M299.314 316.57l2.165 2.165-2.166-2.165z" fill="#e5e3af"/>
+    <path d="M312.307 316.57l2.165 2.165-2.165-2.165z" fill="#f8dcbb"/>
+    <path d="M318.803 316.57l2.166 2.165-2.167-2.165z" fill="#fdab33"/>
+    <path d="M325.3 316.57l2.165 2.165-2.165-2.165z" fill="#fe9f11"/>
+    <path d="M329.63 316.57l2.166 2.165-2.165-2.165z" fill="#faca88"/>
+    <path d="M338.293 316.57l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
+    <path d="M353.45 316.57l2.167 2.165-2.166-2.165m30.318 0l2.166 2.165-2.166-2.165z" fill="#f9d099"/>
+    <path d="M411.92 316.57l2.165 2.165-2.165-2.165z" fill="#fbbe66"/>
+    <path d="M314.472 318.735l2.166 2.166-2.166-2.165z" fill="#fea522"/>
+    <path d="M320.97 318.735l2.164 2.166-2.165-2.165z" fill="#fdab33"/>
+    <path d="M323.134 318.735l2.166 2.166-2.166-2.165z" fill="#fea522"/>
+    <path d="M327.465 318.735l2.166 2.166-2.165-2.165z" fill="#fe9f11"/>
+    <path d="M329.63 318.735l2.166 2.166-2.165-2.165z" fill="#fef8f1"/>
+    <path d="M340.458 318.735l2.166 2.166-2.166-2.165z" fill="#fbbe66"/>
+    <path d="M353.45 318.735l2.167 2.166-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M385.934 318.735l2.165 2.166-2.166-2.165z" fill="#fbbe66"/>
+    <path d="M414.085 318.735l2.166 2.166-2.165-2.165z" fill="#f9d099"/>
+    <path d="M314.472 320.9l2.166 2.166-2.166-2.165z" fill="#f9d6aa"/>
+    <path d="M327.465 320.9l2.166 2.166-2.165-2.165z" fill="#f9d099"/>
+    <path d="M340.458 320.9l2.166 2.166-2.166-2.165z" fill="#fcf1e4"/>
+    <path d="M351.286 320.9l2.165 2.166-2.164-2.165m36.813 0l2.165 2.166-2.166-2.165z" fill="#fdab33"/>
+    <path d="M416.25 320.9l2.166 2.166-2.165-2.165z" fill="#fbead6"/>
+    <path d="M316.638 323.066l2.165 2.166-2.165-2.166z" fill="#fea522"/>
+    <path d="M325.3 323.066l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M342.624 323.066l2.165 2.166-2.166-2.166z" fill="#fcb144"/>
+    <path d="M351.286 323.066l2.165 2.166-2.164-2.166z" fill="#faca88"/>
+    <path d="M388.1 323.066l2.165 2.166-2.166-2.166z" fill="#f8dcbb"/>
+    <path d="M416.25 323.066l2.166 2.166-2.165-2.166z" fill="#fcb144"/>
+    <path d="M299.314 325.232l2.165 2.165-2.166-2.165z" fill="#d3d079"/>
+    <path d="M316.638 325.232l2.165 2.165-2.165-2.165zm25.986 0l2.165 2.165-2.166-2.165z" fill="#faca88"/>
+    <path d="M351.286 325.232l2.165 2.165-2.164-2.165m36.813 0l2.165 2.165-2.166-2.165z" fill="#fae3c9"/>
+    <path d="M418.416 325.232l2.166 2.165-2.166-2.165z" fill="#f8dcbb"/>
+    <path d="M437.906 325.232l2.165 2.165-2.164-2.165z" fill="#f2f1d7"/>
+    <path d="M445.117 326.682l.723 1.444-.723-1.444z" fill="#58587b"/>
+    <path d="M300.028 328.848l.723 1.443-.722-1.442z" fill="#d9d868"/>
+    <path d="M316.638 327.397l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
+    <path d="M385.934 327.397l2.165 2.166-2.166-2.166z" fill="#f9d6aa"/>
+    <path d="M388.1 327.397l2.165 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M418.416 327.397l2.166 2.166-2.166-2.166z" fill="#fcb144"/>
+    <path d="M438.62 328.848l.723 1.443-.723-1.442z" fill="#f2f1d2"/>
+    <path d="M316.638 329.563l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
+    <path d="M383.768 329.563l2.166 2.165-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M385.934 329.563l2.165 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M392.43 329.563l-2.165 4.33 2.165-4.33z" fill="#fdab33"/>
+    <path d="M394.596 329.563l2.165 2.165-2.164-2.165z" fill="#fcb755"/>
+    <path d="M420.582 329.563l2.165 2.165-2.165-2.165z" fill="#fea522"/>
+    <path d="M422.747 329.563l2.166 2.165-2.166-2.165z" fill="#f9d099"/>
+    <path d="M444.402 329.563l2.166 2.165-2.166-2.165z" fill="#53527c"/>
+    <path d="M295.697 333.18l.723 1.44-.723-1.44z" fill="#808067"/>
+    <path d="M318.803 331.728l2.166 2.166-2.167-2.166m6.497 0l2.165 2.166-2.165-2.166z" fill="#fea522"/>
+    <path d="M349.12 331.728l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M383.768 331.728l2.166 2.166-2.166-2.166z" fill="#fae3c9"/>
+    <path d="M392.43 331.728l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M396.76 331.728l2.167 2.166-2.166-2.166z" fill="#fcb144"/>
+    <path d="M424.913 331.728l2.165 2.166-2.165-2.166z" fill="#fcb755"/>
+    <path d="M427.078 331.728l4.33 4.33-4.33-4.33z" fill="#fef8f1"/>
+    <path d="M438.62 333.18l.723 1.44-.723-1.44z" fill="#e5e59d"/>
+    <path d="M445.117 333.18l.723 1.44-.723-1.44z" fill="#32327b"/>
+    <path d="M319.518 335.344l.723 1.443-.722-1.443z" fill="#fcb755"/>
+    <path d="M327.465 333.894l2.166 2.165-2.165-2.166z" fill="#fef8f1"/>
+    <path d="M349.12 333.894l2.166 2.165-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M383.768 333.894l2.166 2.165-2.166-2.166z" fill="#fbead6"/>
+    <path d="M388.1 333.894l2.165 2.165-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M390.265 333.894l2.165 2.165-2.165-2.166z" fill="#fcf1e4"/>
+    <path d="M396.76 333.894l2.167 2.165-2.166-2.166z" fill="#fbead6"/>
+    <path d="M427.078 333.894l2.166 2.165-2.166-2.166z" fill="#fdab33"/>
+    <path d="M294.983 336.06l2.165 2.165-2.165-2.166z" fill="#667"/>
+    <path d="M301.48 336.06l2.165 2.165-2.166-2.166z" fill="#f6f6e4"/>
+    <path d="M327.465 336.06l2.166 2.165-2.165-2.166z" fill="#f9d6aa"/>
+    <path d="M344.79 336.06l2.165 2.165-2.166-2.166z" fill="#fdab33"/>
+    <path d="M346.955 336.06l2.165 2.165-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M349.12 336.06l2.166 2.165-2.166-2.166z" fill="#fcf1e4"/>
+    <path d="M385.934 336.06l2.165 2.165-2.166-2.166z" fill="#fea522"/>
+    <path d="M388.1 336.06l2.165 2.165-2.166-2.166m10.827 0l2.165 2.165-2.165-2.166z" fill="#faca88"/>
+    <path d="M429.244 336.06l2.165 2.165-2.166-2.166z" fill="#fcb144"/>
+    <path d="M437.906 336.06l2.165 2.165-2.164-2.166z" fill="#dddc7a"/>
+    <path d="M294.983 338.225l2.165 2.165-2.165-2.165z" fill="#58587b"/>
+    <path d="M301.48 338.225l2.165 2.165-2.166-2.165z" fill="#f2f1d2"/>
+    <path d="M319.518 339.675l.723 1.443-.722-1.443z" fill="#fcb144"/>
+    <path d="M327.465 338.225l2.166 2.165-2.165-2.165z" fill="#fea522"/>
+    <path d="M349.12 338.225l2.166 2.165-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M351.286 338.225l2.165 2.165-2.164-2.165z" fill="#fea522"/>
+    <path d="M355.617 338.225l2.165 2.165-2.165-2.165z" fill="#fcb144"/>
+    <path d="M357.782 338.225l2.166 2.165-2.166-2.165z" fill="#fbead6"/>
+    <path d="M385.934 338.225l2.165 2.165-2.166-2.165z" fill="#f8dcbb"/>
+    <path d="M388.1 338.225l2.165 2.165-2.166-2.165z" fill="#fcf1e4"/>
+    <path d="M398.927 338.225l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
+    <path d="M401.092 338.225l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M431.41 338.225l2.165 2.165-2.166-2.165z" fill="#fbead6"/>
+    <path d="M437.906 338.225l2.165 2.165-2.164-2.165z" fill="#d9d868"/>
+    <path d="M294.983 340.39l2.165 2.166-2.165-2.166z" fill="#3a3a7c"/>
+    <path d="M301.48 340.39l2.165 2.166-2.166-2.166z" fill="#e5e3af"/>
+    <path d="M329.63 340.39l2.166 2.166-2.165-2.166z" fill="#faca88"/>
+    <path d="M351.286 340.39l2.165 2.166-2.164-2.166z" fill="#fbead6"/>
+    <path d="M357.782 340.39l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M359.948 340.39l2.165 2.166-2.165-2.166z" fill="#fcf1e4"/>
+    <path d="M383.768 340.39l2.166 2.166-2.166-2.166z" fill="#fbead6"/>
+    <path d="M385.934 340.39l2.165 2.166-2.166-2.166z" fill="#fae3c9"/>
+    <path d="M388.1 340.39l2.165 2.166-2.166-2.166z" fill="#fbead6"/>
+    <path d="M401.092 340.39l2.166 2.166-2.166-2.166m17.324 0l2.166 2.166-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M420.582 340.39l2.165 2.166-2.165-2.166z" fill="#fcf1e4"/>
+    <path d="M422.747 340.39l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M424.913 340.39l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
+    <path d="M427.078 340.39l2.166 2.166-2.166-2.166z" fill="#fcb755"/>
+    <path d="M431.41 340.39l2.165 2.166-2.166-2.166z" fill="#fae3c9"/>
+    <path d="M442.237 340.39l2.165 2.166-2.165-2.166z" fill="#808067"/>
+    <path d="M294.983 342.556l2.165 2.165-2.165-2.164z" fill="#32327b"/>
+    <path d="M297.863 344.006l.723 1.443-.723-1.444z" fill="#a4a43d"/>
+    <path d="M301.48 342.556l2.165 2.165-2.166-2.164z" fill="#e5e59d"/>
+    <path d="M318.803 342.556l2.166 2.165-2.167-2.164z" fill="#fbc477"/>
+    <path d="M331.796 342.556l2.166 2.165-2.166-2.164z" fill="#f9d6aa"/>
+    <path d="M353.45 342.556l2.167 2.165-2.166-2.164z" fill="#fbbe66"/>
+    <path d="M359.948 342.556l2.165 2.165-2.165-2.164z" fill="#f9d099"/>
+    <path d="M379.437 342.556l2.166 2.165-2.166-2.164z" fill="#fae3c9"/>
+    <path d="M381.603 342.556l2.165 2.165-2.165-2.164z" fill="#fcb144"/>
+    <path d="M390.265 342.556l2.165 2.165-2.165-2.164z" fill="#fae3c9"/>
+    <path d="M401.092 342.556l2.166 2.165-2.166-2.164z" fill="#f8dcbb"/>
+    <path d="M418.416 342.556l2.166 2.165-2.166-2.164z" fill="#f9d099"/>
+    <path d="M429.244 342.556l2.165 2.165-2.166-2.164z" fill="#fbc477"/>
+    <path d="M431.41 342.556l2.165 2.165-2.166-2.164z" fill="#fbead6"/>
+    <path d="M442.237 342.556l2.165 2.165-2.165-2.164z" fill="#737370"/>
+    <path d="M301.48 344.72l2.165 2.167-2.166-2.166z" fill="#d9d868"/>
+    <path d="M318.803 344.72l2.166 2.167-2.167-2.166z" fill="#f9d099"/>
+    <path d="M333.962 344.72l2.165 2.167-2.165-2.166m19.49 0l2.165 2.167-2.166-2.166z" fill="#f9d6aa"/>
+    <path d="M359.948 344.72l2.165 2.167-2.165-2.166z" fill="#fbc477"/>
+    <path d="M370.775 344.72l2.166 2.167-2.165-2.166z" fill="#fef8f1"/>
+    <path d="M372.94 344.72l2.166 2.167-2.165-2.166z" fill="#f8dcbb"/>
+    <path d="M375.106 344.72l2.166 2.167-2.166-2.166z" fill="#fbc477"/>
+    <path d="M377.272 344.72l2.165 2.167-2.165-2.166z" fill="#fea522"/>
+    <path d="M390.265 344.72l2.165 2.167-2.165-2.166z" fill="#fbead6"/>
+    <path d="M435.74 344.72l2.166 2.167-2.166-2.166z" fill="#f2f1d2"/>
+    <path d="M442.237 344.72l2.165 2.167-2.165-2.166z" fill="#58587b"/>
+    <path d="M297.148 346.887l2.166 2.165-2.166-2.165z" fill="#99994e"/>
+    <path d="M301.48 346.887l2.165 2.165-2.166-2.165z" fill="#d0d045"/>
+    <path d="M336.127 346.887l2.166 2.165-2.166-2.165z" fill="#fcb144"/>
+    <path d="M338.293 346.887l2.165 2.165-2.165-2.165z" fill="#fae3c9"/>
+    <path d="M353.45 346.887l2.167 2.165-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M362.113 346.887l2.166 2.165-2.167-2.165z" fill="#fcb755"/>
+    <path d="M364.28 346.887l2.164 2.165-2.165-2.165z" fill="#fbc477"/>
+    <path d="M366.444 346.887l2.166 2.165-2.166-2.165z" fill="#fcb144"/>
+    <path d="M368.61 346.887l2.165 2.165-2.165-2.165z" fill="#fea522"/>
+    <path d="M385.934 346.887l2.165 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M388.1 346.887l2.165 2.165-2.166-2.165z" fill="#f9d6aa"/>
+    <path d="M418.416 346.887l2.166 2.165-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M435.74 346.887l2.166 2.165-2.166-2.165z" fill="#e0dea1"/>
+    <path d="M442.237 346.887l2.165 2.165-2.165-2.165z" fill="#3a3a7c"/>
+    <path d="M297.148 349.052l2.166 2.166-2.166-2.166z" fill="#737370"/>
+    <path d="M303.645 349.052l2.165 2.166-2.165-2.166z" fill="#fbfaf2"/>
+    <path d="M320.97 349.052l2.164 2.166-2.165-2.166z" fill="#fea522"/>
+    <path d="M340.458 349.052l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M342.624 349.052l2.165 2.166-2.166-2.166z" fill="#fcb144"/>
+    <path d="M344.79 349.052l2.165 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M346.955 349.052l2.165 2.166-2.165-2.166z" fill="#faca88"/>
+    <path d="M349.12 349.052l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M351.286 349.052l2.165 2.166-2.164-2.166z" fill="#fcb144"/>
+    <path d="M353.45 349.052l2.167 2.166-2.166-2.166z" fill="#fdab33"/>
+    <path d="M383.768 349.052l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M385.934 349.052l2.165 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M416.25 349.052l2.166 2.166-2.165-2.166z" fill="#fdab33"/>
+    <path d="M435.74 349.052l2.166 2.166-2.166-2.166z" fill="#e1e18c"/>
+    <path d="M440.786 350.503l.723 1.442-.724-1.442z" fill="#a4a43d"/>
+    <path d="M442.237 349.052l2.165 2.166-2.165-2.166z" fill="#262678"/>
+    <path d="M297.148 351.218l2.166 2.165-2.166-2.165z" fill="#58587b"/>
+    <path d="M303.645 351.218l2.165 2.165-2.165-2.165z" fill="#f2f1d2"/>
+    <path d="M320.97 351.218l2.164 2.165-2.165-2.165z" fill="#faca88"/>
+    <path d="M379.437 351.218l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M381.603 351.218l2.165 2.165-2.165-2.165z" fill="#fbead6"/>
+    <path d="M401.092 351.218l2.166 2.165-2.166-2.165z" fill="#fbc477"/>
+    <path d="M416.25 351.218l2.166 2.165-2.165-2.165z" fill="#faca88"/>
+    <path d="M435.74 351.218l2.166 2.165-2.166-2.165z" fill="#d4d456"/>
+    <path d="M297.148 353.383l2.166 2.166-2.166-2.167z" fill="#32327b"/>
+    <path d="M303.645 353.383l2.165 2.166-2.165-2.167z" fill="#e5e59d"/>
+    <path d="M320.97 353.383l2.164 2.166-2.165-2.167z" fill="#fef8f1"/>
+    <path d="M323.134 353.383l2.166 2.166-2.166-2.167z" fill="#fe9f11"/>
+    <path d="M379.437 353.383l2.166 2.166-2.166-2.167z" fill="#fbead6"/>
+    <path d="M401.092 353.383l2.166 2.166-2.166-2.167z" fill="#fea522"/>
+    <path d="M416.25 353.383l2.166 2.166-2.165-2.167z" fill="#fcf1e4"/>
+    <path d="M440.07 353.383l2.167 2.166-2.166-2.167z" fill="#808067"/>
+    <path d="M297.148 355.55l2.166 2.164-2.166-2.165z" fill="#0e0e6e"/>
+    <path d="M299.314 355.55l2.165 2.164-2.166-2.165z" fill="#a4a43d"/>
+    <path d="M303.645 355.55l2.165 2.164-2.165-2.165z" fill="#d9d868"/>
+    <path d="M323.134 355.55l2.166 2.164-2.166-2.165z" fill="#f8dcbb"/>
+    <path d="M398.927 355.55l2.165 2.164-2.165-2.165z" fill="#f9d6aa"/>
+    <path d="M414.085 355.55l2.166 2.164-2.165-2.165z" fill="#faca88"/>
+    <path d="M433.575 355.55l2.165 2.164-2.165-2.165z" fill="#f2f1d2"/>
+    <path d="M440.07 355.55l2.167 2.164-2.166-2.165z" fill="#58587b"/>
+    <path d="M299.314 357.714l2.165 2.166-2.166-2.166z" fill="#8d8d5b"/>
+    <path d="M325.3 357.714l2.165 2.166-2.165-2.166z" fill="#f9d6aa"/>
+    <path d="M368.61 357.714l2.165 2.166-2.165-2.166z" fill="#fdab33"/>
+    <path d="M370.775 357.714l2.166 2.166-2.165-2.166z" fill="#fff"/>
+    <path d="M374.39 358.43l1.444.722-1.443-.723z" fill="#fcb144"/>
+    <path d="M396.76 357.714l-2.164 4.33 2.165-4.33z" fill="#fef8f1"/>
+    <path d="M398.927 357.714l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
+    <path d="M411.92 357.714l-2.166 4.33 2.166-4.33z" fill="#fdab33"/>
+    <path d="M433.575 357.714l2.165 2.166-2.165-2.166z" fill="#e5e59d"/>
+    <path d="M440.07 357.714l2.167 2.166-2.166-2.166z" fill="#3a3a7c"/>
+    <path d="M299.314 359.88l2.165 2.165-2.166-2.165z" fill="#667"/>
+    <path d="M305.81 359.88l2.166 2.165-2.166-2.165z" fill="#f2f1d2"/>
+    <path d="M327.465 359.88l2.166 2.165-2.165-2.165z" fill="#f9d6aa"/>
+    <path d="M368.61 359.88l2.165 2.165-2.165-2.165z" fill="#fe9f11"/>
+    <path d="M370.775 359.88l2.166 2.165-2.165-2.165z" fill="#faca88"/>
+    <path d="M372.94 359.88l2.166 2.165-2.165-2.165z" fill="#fea522"/>
+    <path d="M375.106 359.88l2.166 2.165-2.166-2.165z" fill="#fcf1e4"/>
+    <path d="M396.76 359.88l2.167 2.165-2.166-2.165z" fill="#fdab33"/>
+    <path d="M411.92 359.88l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
+    <path d="M433.575 359.88l2.165 2.165-2.165-2.165z" fill="#d9d868"/>
+    <path d="M437.906 359.88l2.165 2.165-2.164-2.165z" fill="#a4a43d"/>
+    <path d="M440.07 359.88l2.167 2.165-2.166-2.165z" fill="#0e0e6e"/>
+    <path d="M299.314 362.045l2.165 2.166-2.166-2.165z" fill="#3a3a7c"/>
+    <path d="M305.81 362.045l2.166 2.166-2.166-2.165z" fill="#e5e59d"/>
+    <path d="M329.63 362.045l4.332 4.33-4.33-4.33z" fill="#fae3c9"/>
+    <path d="M331.796 362.045l2.166 2.166-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M372.94 362.045l2.166 2.166-2.165-2.165z" fill="#f8dcbb"/>
+    <path d="M392.43 362.045l2.166 2.166-2.166-2.165z" fill="#fcf1e4"/>
+    <path d="M394.596 362.045l2.165 2.166-2.164-2.165z" fill="#fdab33"/>
+    <path d="M407.59 362.045l2.164 2.166-2.165-2.165z" fill="#fcb144"/>
+    <path d="M409.754 362.045l2.166 2.166-2.166-2.165z" fill="#fef8f1"/>
+    <path d="M431.41 362.045l2.165 2.166-2.166-2.165z" fill="#fbfaf2"/>
+    <path d="M437.906 362.045l2.165 2.166-2.164-2.165z" fill="#8d8d5b"/>
+    <path d="M299.314 364.21l2.165 2.166-2.166-2.165z" fill="#0e0e6e"/>
+    <path d="M301.48 364.21l2.165 2.166-2.166-2.165z" fill="#a4a43d"/>
+    <path d="M305.81 364.21l2.166 2.166-2.166-2.165z" fill="#d4d456"/>
+    <path d="M370.775 364.21l2.166 2.166-2.165-2.165z" fill="#f9d6aa"/>
+    <path d="M390.265 364.21l2.165 2.166-2.165-2.165z" fill="#f9d099"/>
+    <path d="M392.43 364.21l2.166 2.166-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M405.423 364.21l2.166 2.166-2.167-2.165z" fill="#faca88"/>
+    <path d="M431.41 364.21l2.165 2.166-2.166-2.165z" fill="#eeedc1"/>
+    <path d="M437.906 364.21l2.165 2.166-2.164-2.165z" fill="#58587b"/>
+    <path d="M301.48 366.376l2.165 2.166-2.166-2.166z" fill="#737370"/>
+    <path d="M307.976 366.376l2.165 2.166-2.164-2.166z" fill="#f6f6e4"/>
+    <path d="M331.796 366.376l2.166 2.166-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M366.444 366.376l2.166 2.166-2.166-2.166z" fill="#fcb144"/>
+    <path d="M369.324 367.827l.723 1.442-.723-1.443z" fill="#f8dcbb"/>
+    <path d="M385.934 366.376l2.165 2.166-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M388.1 366.376l2.165 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M401.092 366.376l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
+    <path d="M403.258 366.376l2.165 2.166-2.165-2.166z" fill="#fcf1e4"/>
+    <path d="M431.41 366.376l2.165 2.166-2.166-2.166z" fill="#d3d079"/>
+    <path d="M435.74 366.376l2.166 2.166-2.166-2.166z" fill="#a4a43d"/>
+    <path d="M437.906 366.376l2.165 2.166-2.164-2.166z" fill="#262678"/>
+    <path d="M301.48 368.542l2.165 2.165-2.166-2.165z" fill="#49497d"/>
+    <path d="M307.976 368.542l2.165 2.165-2.164-2.165z" fill="#e0dea1"/>
+    <path d="M329.63 368.542l2.166 2.165-2.165-2.165z" fill="#fae3c9"/>
+    <path d="M359.948 368.542l2.165 2.165-2.165-2.165z" fill="#fdab33"/>
+    <path d="M362.113 368.542l2.166 2.165-2.167-2.165z" fill="#fbc477"/>
+    <path d="M364.28 368.542l2.164 2.165-2.165-2.165z" fill="#fbead6"/>
+    <path d="M370.775 368.542l2.166 2.165-2.165-2.165z" fill="#fcb144"/>
+    <path d="M398.927 368.542l2.165 2.165-2.165-2.165z" fill="#f9d6aa"/>
+    <path d="M435.74 368.542l2.166 2.165-2.166-2.165z" fill="#99994e"/>
+    <path d="M301.48 370.707l2.165 2.166-2.166-2.166z" fill="#0e0e6e"/>
+    <path d="M303.645 370.707l2.165 2.166-2.165-2.166z" fill="#a4a43d"/>
+    <path d="M307.976 370.707l2.165 2.166-2.164-2.166z" fill="#d4d456"/>
+    <path d="M327.465 370.707l2.166 2.166-2.165-2.166z" fill="#f9d099"/>
+    <path d="M329.63 370.707l2.166 2.166-2.165-2.166m10.828 0l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M342.624 370.707l2.165 2.166-2.166-2.166z" fill="#f9d6aa"/>
+    <path d="M344.79 370.707l2.165 2.166-2.166-2.166z" fill="#f9d099"/>
+    <path d="M353.45 370.707l2.167 2.166-2.166-2.166z" fill="#f9d6aa"/>
+    <path d="M355.617 370.707l2.165 2.166-2.165-2.166z" fill="#fae3c9"/>
+    <path d="M357.782 370.707l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M375.106 370.707l2.166 2.166-2.166-2.166z" fill="#fbead6"/>
+    <path d="M377.272 370.707l2.165 2.166-2.165-2.166z" fill="#fae3c9"/>
+    <path d="M379.437 370.707l2.166 2.166-2.166-2.166z" fill="#faca88"/>
+    <path d="M381.603 370.707l2.165 2.166-2.165-2.166z" fill="#fbc477"/>
+    <path d="M383.768 370.707l2.166 2.166-2.166-2.166z" fill="#fdab33"/>
+    <path d="M394.596 370.707l2.165 2.166-2.164-2.166z" fill="#fe9f11"/>
+    <path d="M396.76 370.707l2.167 2.166-2.166-2.166z" fill="#f9d6aa"/>
+    <path d="M429.244 370.707l2.165 2.166-2.166-2.166z" fill="#e5e3af"/>
+    <path d="M435.74 370.707l2.166 2.166-2.166-2.166z" fill="#667"/>
+    <path d="M303.645 372.873l2.165 2.165-2.165-2.165z" fill="#737370"/>
+    <path d="M310.14 372.873l2.167 2.165-2.166-2.165z" fill="#f2f1d7"/>
+    <path d="M325.3 372.873l2.165 2.165-2.165-2.165z" fill="#fea522"/>
+    <path d="M336.127 372.873l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M338.293 372.873l2.165 2.165-2.165-2.165z" fill="#fbbe66"/>
+    <path d="M340.458 372.873l2.166 2.165-2.166-2.165z" fill="#fcf1e4"/>
+    <path d="M392.43 372.873l2.166 2.165-2.166-2.165z" fill="#fea522"/>
+    <path d="M394.596 372.873l2.165 2.165-2.164-2.165z" fill="#fbead6"/>
+    <path d="M429.244 372.873l2.165 2.165-2.166-2.165z" fill="#dddc7a"/>
+    <path d="M433.575 372.873l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
+    <path d="M435.74 372.873l2.166 2.165-2.166-2.165z" fill="#262678"/>
+    <path d="M303.645 375.038l2.165 2.166-2.165-2.166z" fill="#49497d"/>
+    <path d="M306.525 376.49l.723 1.44-.723-1.44z" fill="#a4a43d"/>
+    <path d="M310.14 375.038l2.167 2.166-2.166-2.166z" fill="#d3d079"/>
+    <path d="M327.465 375.038l2.166 2.166-2.165-2.166z" fill="#f9d099"/>
+    <path d="M329.63 375.038l2.166 2.166-2.165-2.166z" fill="#fcb144"/>
+    <path d="M331.796 375.038l2.166 2.166-2.166-2.166z" fill="#faca88"/>
+    <path d="M333.962 375.038l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
+    <path d="M336.127 375.038l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
+    <path d="M383.768 375.038l2.166 2.166-2.166-2.166z" fill="#f8dcbb"/>
+    <path d="M392.43 375.038l2.166 2.166-2.166-2.166z" fill="#fcf1e4"/>
+    <path d="M427.078 375.038l2.166 2.166-2.166-2.166z" fill="#f6f6e4"/>
+    <path d="M433.575 375.038l2.165 2.166-2.165-2.166z" fill="#8d8d5b"/>
+    <path d="M312.307 377.204l2.165 2.165-2.165-2.166z" fill="#fbfaf2"/>
+    <path d="M383.768 377.204l2.166 2.165-2.166-2.166z" fill="#fbbe66"/>
+    <path d="M390.265 377.204l2.165 2.165-2.165-2.166z" fill="#faca88"/>
+    <path d="M427.078 377.204l2.166 2.165-2.166-2.166z" fill="#e1e18c"/>
+    <path d="M433.575 377.204l2.165 2.165-2.165-2.166z" fill="#49497d"/>
+    <path d="M305.81 379.37l2.166 2.165-2.166-2.166z" fill="#58587b"/>
+    <path d="M312.307 379.37l2.165 2.165-2.165-2.166z" fill="#e5e59d"/>
+    <path d="M383.768 379.37l2.166 2.165-2.166-2.166z" fill="#fe9f11"/>
+    <path d="M388.1 379.37l2.165 2.165-2.166-2.166z" fill="#fdab33"/>
+    <path d="M424.913 379.37l2.165 2.165-2.165-2.166z" fill="#fbfaf2"/>
+    <path d="M431.41 379.37l2.165 2.165-2.166-2.166z" fill="#a4a43d"/>
+    <path d="M433.575 379.37l2.165 2.165-2.165-2.166z" fill="#0e0e6e"/>
+    <path d="M305.81 381.535l2.166 2.165-2.166-2.165z" fill="#1b1b74"/>
+    <path d="M307.976 381.535l2.165 2.165-2.164-2.165z" fill="#a4a43d"/>
+    <path d="M312.307 381.535l2.165 2.165-2.165-2.165z" fill="#d0d045"/>
+    <path d="M381.603 381.535l2.165 2.165-2.165-2.165z" fill="#fbead6"/>
+    <path d="M385.934 381.535l2.165 2.165-2.166-2.165z" fill="#fe9f11"/>
+    <path d="M388.1 381.535l2.165 2.165-2.166-2.165z" fill="#fbead6"/>
+    <path d="M424.913 381.535l2.165 2.165-2.165-2.165z" fill="#e5e59d"/>
+    <path d="M431.41 381.535l2.165 2.165-2.166-2.165z" fill="#667"/>
+    <path d="M307.976 383.7l2.165 2.166-2.164-2.166z" fill="#6e6c70"/>
+    <path d="M314.472 383.7l2.166 2.166-2.166-2.166z" fill="#e5e3af"/>
+    <path d="M382.317 385.15l.723 1.443-.723-1.442z" fill="#faca88"/>
+    <path d="M385.934 383.7l2.165 2.166-2.166-2.166z" fill="#fae3c9"/>
+    <path d="M422.747 383.7l2.166 2.166-2.166-2.166z" fill="#fbfaf2"/>
+    <path d="M429.244 383.7l2.165 2.166-2.166-2.166z" fill="#a4a43d"/>
+    <path d="M431.41 383.7l2.165 2.166-2.166-2.166m-123.434 2.166l2.165 2.165-2.164-2.164z" fill="#1b1b74"/>
+    <path d="M310.14 385.866l2.167 2.165-2.166-2.164z" fill="#a4a43d"/>
+    <path d="M314.472 385.866l2.166 2.165-2.166-2.164z" fill="#d0d045"/>
+    <path d="M316.638 385.866l2.165 2.165-2.165-2.164z" fill="#fbfaf2"/>
+    <path d="M383.768 385.866l2.166 2.165-2.166-2.164z" fill="#f9d6aa"/>
+    <path d="M422.747 385.866l2.166 2.165-2.166-2.164z" fill="#e5e59d"/>
+    <path d="M429.244 385.866l2.165 2.165-2.166-2.164M310.14 388.03l2.167 2.167-2.166-2.166z" fill="#6e6c70"/>
+    <path d="M316.638 388.03l2.165 2.167-2.165-2.166z" fill="#8cbf84"/>
+    <path d="M317.57 388.03c7.52 15.83 34.12 53.17 54.44 52.443 19.734-.706 42.02-37.14 50.737-52.442H317.57z" fill="#0cf"/>
+    <path d="M427.078 388.03l2.166 2.167-2.166-2.166z" fill="#a4a43d"/>
+    <path d="M429.244 388.03l2.165 2.167-2.166-2.166m-119.103 2.167l2.167 2.165-2.166-2.165z" fill="#1b1b74"/>
+    <path d="M312.307 390.197l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
+    <path d="M316.638 390.197l2.165 2.165-2.165-2.165z" fill="#adb333"/>
+    <path d="M318.803 390.197l2.166 2.165-2.167-2.165z" fill="#1ac5b5"/>
+    <path d="M420.582 390.197l2.165 2.165-2.165-2.165z" fill="#68b070"/>
+    <path d="M427.078 390.197l2.166 2.165-2.166-2.165z" fill="#667"/>
+    <path d="M312.307 392.362l2.165 2.166-2.165-2.166z" fill="#58587b"/>
+    <path d="M318.803 392.362l2.166 2.166-2.167-2.166z" fill="#7fb15c"/>
+    <path d="M418.416 392.362l2.166 2.166-2.166-2.166z" fill="#27c2aa"/>
+    <path d="M424.913 392.362l-2.166 4.33 2.166-4.33z" fill="#a4a43d"/>
+    <path d="M427.078 392.362l2.166 2.166-2.166-2.166m-114.77 2.166l2.164 2.165-2.165-2.165z" fill="#0e0e6e"/>
+    <path d="M314.472 394.528l4.33 4.33-4.33-4.33z" fill="#a4a43d"/>
+    <path d="M320.97 394.528l2.164 2.165-2.165-2.165z" fill="#34be9e"/>
+    <path d="M418.416 394.528l2.166 2.165-2.166-2.165z" fill="#96b247"/>
+    <path d="M424.913 394.528l2.165 2.165-2.165-2.165z" fill="#53527c"/>
+    <path d="M314.472 396.693l2.166 2.166-2.166-2.167z" fill="#3a3a7c"/>
+    <path d="M320.97 396.693l2.164 2.166-2.165-2.167z" fill="#a2b23d"/>
+    <path d="M323.134 396.693l2.166 2.166-2.166-2.167z" fill="#0dc9c1"/>
+    <path d="M416.25 396.693l2.166 2.166-2.165-2.167z" fill="#5bb47c"/>
+    <path d="M422.747 396.693l2.166 2.166-2.166-2.167z" fill="#8d8d5b"/>
+    <path d="M316.638 398.86l2.165 2.164-2.165-2.165z" fill="#737370"/>
+    <path d="M323.134 398.86l2.166 2.164-2.166-2.165z" fill="#74b166"/>
+    <path d="M414.085 398.86l2.166 2.164-2.165-2.165z" fill="#27c2aa"/>
+    <path d="M420.582 398.86l-2.166 4.33 2.166-4.33z" fill="#a4a43d"/>
+    <path d="M422.747 398.86l2.166 2.164-2.166-2.165z" fill="#262678"/>
+    <path d="M316.638 401.024l2.165 2.166-2.165-2.166z" fill="#0e0e6e"/>
+    <path d="M318.803 401.024l4.33 4.33-4.33-4.33z" fill="#a4a43d"/>
+    <path d="M325.3 401.024l2.165 2.166-2.165-2.166z" fill="#42bb92"/>
+    <path d="M411.92 401.024l2.165 2.166-2.165-2.166z" fill="#0dc9c1"/>
+    <path d="M414.085 401.024l2.166 2.166-2.165-2.166z" fill="#96b247"/>
+    <path d="M420.582 401.024l2.165 2.166-2.165-2.166z" fill="#58587b"/>
+    <path d="M318.803 403.19l2.166 2.165-2.167-2.165z" fill="#3a3a7c"/>
+    <path d="M325.3 403.19l2.165 2.165-2.165-2.165z" fill="#adb333"/>
+    <path d="M327.465 403.19l2.166 2.165-2.165-2.165z" fill="#27c2aa"/>
+    <path d="M411.92 403.19l2.165 2.165-2.165-2.165z" fill="#74b166"/>
+    <path d="M418.416 403.19l2.166 2.165-2.166-2.165z" fill="#8d8d5b"/>
+    <path d="M320.97 405.355l2.164 2.166-2.165-2.165z" fill="#6e6c70"/>
+    <path d="M327.465 405.355l2.166 2.166-2.165-2.165z" fill="#96b247"/>
+    <path d="M329.63 405.355l2.166 2.166-2.165-2.165z" fill="#0dc9c1"/>
+    <path d="M409.754 405.355l2.166 2.166-2.166-2.165z" fill="#42bb92"/>
+    <path d="M416.25 405.355l-4.33 6.497 4.33-6.497z" fill="#a4a43d"/>
+    <path d="M418.416 405.355l2.166 2.166-2.166-2.165z" fill="#1b1b74"/>
+    <path d="M320.97 407.52l2.164 2.166-2.165-2.165z" fill="#0e0e6e"/>
+    <path d="M323.134 407.52l2.166 2.166-2.166-2.165z" fill="#8d8d5b"/>
+    <path d="M329.63 407.52l2.166 2.166-2.165-2.165z" fill="#7fb15c"/>
+    <path d="M407.59 407.52l2.164 2.166-2.165-2.165z" fill="#34be9e"/>
+    <path d="M416.25 407.52l2.166 2.166-2.165-2.165z" fill="#3a3a7c"/>
+    <path d="M323.134 409.686l2.166 2.166-2.166-2.166z" fill="#1b1b74"/>
+    <path d="M325.3 409.686l23.82 23.82-23.82-23.82z" fill="#a4a43d"/>
+    <path d="M331.796 409.686l2.166 2.166-2.166-2.166z" fill="#74b166"/>
+    <path d="M405.423 409.686l2.166 2.166-2.167-2.166z" fill="#27c2aa"/>
+    <path d="M407.59 409.686l2.164 2.166-2.165-2.166z" fill="#adb333"/>
+    <path d="M414.085 409.686l2.166 2.166-2.165-2.166z" fill="#667"/>
+    <path d="M325.3 411.852l2.165 2.165-2.165-2.165z" fill="#32327b"/>
+    <path d="M333.962 411.852l2.165 2.165-2.165-2.165z" fill="#42bb92"/>
+    <path d="M403.258 411.852l-8.662 10.827 8.662-10.828z" fill="#0dc9c1"/>
+    <path d="M405.423 411.852l2.166 2.165-2.167-2.165z" fill="#adb333"/>
+    <path d="M411.92 411.852l2.165 2.165-2.165-2.165z" fill="#737370"/>
+    <path d="M327.465 414.017l2.166 2.166-2.165-2.166z" fill="#49497d"/>
+    <path d="M336.127 414.017l2.166 2.166-2.166-2.166z" fill="#42bb92"/>
+    <path d="M403.258 414.017l2.165 2.166-2.165-2.166z" fill="#96b247"/>
+    <path d="M409.754 414.017l-2.165 4.33 2.164-4.33z" fill="#8d8d5b"/>
+    <path d="M411.92 414.017l2.165 2.166-2.165-2.166z" fill="#0e0e6e"/>
+    <path d="M329.63 416.183l2.166 2.165-2.165-2.165z" fill="#53527c"/>
+    <path d="M338.293 416.183l2.165 2.165-2.165-2.165z" fill="#42bb92"/>
+    <path d="M401.092 416.183l2.166 2.165-2.166-2.165z" fill="#96b247"/>
+    <path d="M409.754 416.183l2.166 2.165-2.166-2.165z" fill="#0e0e6e"/>
+    <path d="M331.796 418.348l2.166 2.166-2.166-2.166z" fill="#6e6c70"/>
+    <path d="M340.458 418.348l2.166 2.166-2.166-2.166z" fill="#42bb92"/>
+    <path d="M398.927 418.348l2.165 2.166-2.165-2.166z" fill="#96b247"/>
+    <path d="M405.423 418.348l-4.33 6.497 4.33-6.497z" fill="#a4a43d"/>
+    <path d="M407.59 418.348l2.164 2.166-2.165-2.166z" fill="#262678"/>
+    <path d="M333.962 420.514l2.165 2.165-2.165-2.166z" fill="#6e6c70"/>
+    <path d="M342.624 420.514l2.165 2.165-2.166-2.166z" fill="#42bb92"/>
+    <path d="M396.76 420.514l2.167 2.165-2.166-2.166z" fill="#96b247"/>
+    <path d="M405.423 420.514l2.166 2.165-2.167-2.166z" fill="#262678"/>
+    <path d="M336.127 422.68l2.166 2.165-2.166-2.166z" fill="#6e6c70"/>
+    <path d="M344.79 422.68l2.165 2.165-2.166-2.166z" fill="#68b070"/>
+    <path d="M392.43 422.68l2.166 2.165-2.166-2.166z" fill="#27c2aa"/>
+    <path d="M394.596 422.68l2.165 2.165-2.164-2.166z" fill="#adb333"/>
+    <path d="M403.258 422.68l2.165 2.165-2.165-2.166z" fill="#262678"/>
+    <path d="M338.293 424.845l2.165 2.165-2.165-2.165z" fill="#667"/>
+    <path d="M346.955 424.845l2.165 2.165-2.165-2.165z" fill="#74b166"/>
+    <path d="M390.265 424.845l2.165 2.165-2.165-2.165z" fill="#34be9e"/>
+    <path d="M392.43 424.845l2.166 2.165-2.166-2.165z" fill="#adb333"/>
+    <path d="M398.927 424.845l-2.166 4.33 2.167-4.33z" fill="#8d8d5b"/>
+    <path d="M401.092 424.845l2.166 2.165-2.166-2.165z" fill="#262678"/>
+    <path d="M340.458 427.01l2.166 2.166-2.166-2.166z" fill="#49497d"/>
+    <path d="M349.12 427.01l2.166 2.166-2.166-2.166z" fill="#96b247"/>
+    <path d="M351.286 427.01l2.165 2.166-2.164-2.166z" fill="#0dc9c1"/>
+    <path d="M388.1 427.01l2.165 2.166-2.166-2.166z" fill="#42bb92"/>
+    <path d="M398.927 427.01l2.165 2.166-2.165-2.166z" fill="#0e0e6e"/>
+    <path d="M342.624 429.176l2.165 2.165-2.166-2.164z" fill="#49497d"/>
+    <path d="M351.286 429.176l2.165 2.165-2.164-2.164z" fill="#a2b23d"/>
+    <path d="M353.45 429.176l2.167 2.165-2.166-2.164z" fill="#27c2aa"/>
+    <path d="M385.934 429.176l2.165 2.165-2.166-2.164z" fill="#74b166"/>
+    <path d="M392.43 429.176l-6.496 8.662 6.496-8.662z" fill="#a4a43d"/>
+    <path d="M394.596 429.176l2.165 2.165-2.164-2.164z" fill="#808067"/>
+    <path d="M396.76 429.176l2.167 2.165-2.166-2.164z" fill="#0e0e6e"/>
+    <path d="M344.79 431.34l2.165 2.167-2.166-2.166z" fill="#262678"/>
+    <path d="M353.45 431.34l2.167 2.167-2.166-2.166z" fill="#adb333"/>
+    <path d="M355.617 431.34l2.165 2.167-2.165-2.166z" fill="#42bb92"/>
+    <path d="M381.603 431.34l2.165 2.167-2.165-2.166z" fill="#0dc9c1"/>
+    <path d="M383.768 431.34l2.166 2.167-2.166-2.166z" fill="#96b247"/>
+    <path d="M392.43 431.34l2.166 2.167-2.166-2.166z" fill="#6e6c70"/>
+    <path d="M346.955 433.507l2.165 2.165-2.165-2.165z" fill="#1b1b74"/>
+    <path d="M349.12 433.507l2.166 2.165-2.166-2.165z" fill="#8d8d5b"/>
+    <path d="M357.782 433.507l2.166 2.165-2.166-2.165z" fill="#74b166"/>
+    <path d="M359.948 433.507l2.165 2.165-2.165-2.165z" fill="#0dc9c1"/>
+    <path d="M379.437 433.507l2.166 2.165-2.166-2.165z" fill="#34be9e"/>
+    <path d="M381.603 433.507l2.165 2.165-2.165-2.165z" fill="#adb333"/>
+    <path d="M390.265 433.507l2.165 2.165-2.165-2.165z" fill="#49497d"/>
+    <path d="M349.12 435.672l2.166 2.166-2.166-2.166z" fill="#0e0e6e"/>
+    <path d="M351.286 435.672l2.165 2.166-2.164-2.166z" fill="#6e6c70"/>
+    <path d="M353.45 435.672l4.332 4.33-4.33-4.33z" fill="#a4a43d"/>
+    <path d="M359.948 435.672l2.165 2.166-2.165-2.166z" fill="#96b247"/>
+    <path d="M362.113 435.672l2.166 2.166-2.167-2.166z" fill="#27c2aa"/>
+    <path d="M377.272 435.672l2.165 2.166-2.165-2.166z" fill="#68b070"/>
+    <path d="M388.1 435.672l2.165 2.166-2.166-2.166z" fill="#32327b"/>
+    <path d="M353.45 437.838l2.167 2.165-2.166-2.165z" fill="#49497d"/>
+    <path d="M364.28 437.838l2.164 2.165-2.165-2.165z" fill="#5bb47c"/>
+    <path d="M372.94 437.838l2.166 2.165-2.165-2.165z" fill="#27c2aa"/>
+    <path d="M375.106 437.838l2.166 2.165-2.166-2.165z" fill="#96b247"/>
+    <path d="M381.603 437.838l-2.166 4.33 2.166-4.33z" fill="#a4a43d"/>
+    <path d="M383.768 437.838l2.166 2.165-2.166-2.165z" fill="#808067"/>
+    <path d="M385.934 437.838l2.165 2.165-2.166-2.165z" fill="#0e0e6e"/>
+    <path d="M355.617 440.003l2.165 2.166-2.165-2.167z" fill="#262678"/>
+    <path d="M357.782 440.003l2.166 2.166-2.166-2.167z" fill="#8d8d5b"/>
+    <path d="M366.444 440.003l2.166 2.166-2.166-2.167z" fill="#8bb252"/>
+    <path d="M368.61 440.003l2.165 2.166-2.165-2.167z" fill="#1ac5b5"/>
+    <path d="M370.775 440.003l2.166 2.166-2.165-2.167z" fill="#5bb47c"/>
+    <path d="M381.603 440.003l2.165 2.166-2.165-2.167z" fill="#58587b"/>
+    <path d="M357.782 442.17l2.166 2.164-2.166-2.165z" fill="#0e0e6e"/>
+    <path d="M359.948 442.17l2.165 2.164-2.165-2.165z" fill="#667"/>
+    <path d="M362.113 442.17l2.166 2.164-2.167-2.165z" fill="#a4a43d"/>
+    <path d="M377.272 442.17l2.165 2.164-2.165-2.165z" fill="#99994e"/>
+    <path d="M379.437 442.17l2.166 2.164-2.166-2.165m-17.324 2.164l2.166 2.166-2.167-2.166z" fill="#32327b"/>
+    <path d="M364.28 444.334l2.164 2.166-2.165-2.166z" fill="#99994e"/>
+    <path d="M372.94 444.334l2.166 2.166-2.165-2.166z" fill="#a4a43d"/>
+    <path d="M375.106 444.334l2.166 2.166-2.166-2.166z" fill="#667"/>
+    <path d="M377.272 444.334l2.165 2.166-2.165-2.166M364.28 446.5l2.164 2.165-2.165-2.165z" fill="#0e0e6e"/>
+    <path d="M366.444 446.5l2.166 2.165-2.166-2.165z" fill="#667"/>
+    <path d="M368.61 446.5l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
+    <path d="M370.775 446.5l2.166 2.165-2.165-2.165z" fill="#99994e"/>
+    <path d="M372.94 446.5l2.166 2.165-2.165-2.165z" fill="#32327b"/>
+    <path d="M368.61 448.665l2.165 2.166-2.165-2.165z" fill="#262678"/>
+    <path d="M370.775 448.665l2.166 2.166-2.165-2.165z" fill="#0e0e6e"/>
+    <path d="M372.94 303.577c3.342 7.86 14.055 16.537 17 20.79-3.75 4.254-4.498 3.79-4.006 11.692 6.518-6.82 6.635-7.532 10.827-6.497 9.185 9.164 1.645 28.846-5.945 33.125-7.588 4.565-6.21-.158-17.584 5.563 5.215 4.46 11.257-.653 16.194.714 2.683 3.183-1.275 8.984.81 14.448 4.364-.42 3.84-9.23 4.855-12.423 3.187-11.704 22.352-19.866 23.326-30.6 4.04-1.897 8.08-.593 12.993 2.166-2.448-10.057-10.543-9.95-12.712-13.09-5.165-7.892-9.743-16.896-20.774-19.23-8.374-1.775-7.748.532-13.114-3.128-3.335-2.603-13.49-7.523-11.867-3.532z" fill="#f90"/>
+    <path d="M397.017 312.505a1.746 1.746 0 1 1-3.495-.001 1.746 1.746 0 0 1 3.497.001z" fill-rule="evenodd" fill="#fff"/>
+    <path d="M346.16 336.92c5.386-6.627 8.055-20.153 10.44-24.744 5.512 1.327 5.452 2.206 12.21-1.92-9.076-2.577-9.76-2.348-10.803-6.538 3.812-12.402 24.737-14.93 32.066-10.218 7.58 4.577 2.762 5.566 13.134 12.95 1.506-6.695-5.837-9.648-6.936-14.652 1.563-3.86 8.54-3.07 12.398-7.466-2.41-3.662-9.954.917-13.253 1.51-11.836 2.65-28.005-10.482-37.95-6.33-3.566-2.686-4.3-6.866-4.157-12.5-7.748 6.863-3.87 13.97-5.634 17.355-4.566 8.254-10.388 16.507-7.3 27.352 2.344 8.23 4.09 6.6 3.362 13.055-.744 4.164-.35 15.443 2.42 12.142z" fill="#f90"/>
+    <path d="M342.805 311.46a1.747 1.747 0 0 1 2.36.728 1.745 1.745 0 1 1-3.087 1.63 1.746 1.746 0 0 1 .727-2.358z" fill-rule="evenodd" fill="#fff"/>
+    <path d="M389.94 341.57c-8.457-1.184-21.414 3.528-26.576 3.862-1.715-5.403-.932-5.807-7.958-9.455 2.488 9.1 3.037 9.566-.008 12.627-12.586 3.152-25.573-13.45-25.332-22.158-.005-8.856 3.334-5.243 4.288-17.938-6.508 2.173-5.237 9.985-8.95 13.514-4.112.66-7.046-5.72-12.803-6.748-1.886 3.957 5.935 8.045 8.15 10.56 8.39 8.76 5.514 29.39 14.213 35.755-.455 4.44-3.652 7.23-8.548 10.02 9.88 3.083 13.957-3.91 17.767-4.153 9.425-.363 19.5.35 27.184-7.902 5.833-6.265 3.533-6.916 9.435-9.63 3.95-1.518 13.398-7.69 9.14-8.353z" fill="#f90"/>
+    <path d="M369.887 357.608a1.746 1.746 0 1 1 1.8-2.995 1.746 1.746 0 0 1-1.8 2.996z" fill-rule="evenodd" fill="#fff"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 2 - 0
usbkvm-app/www/tocas/flags/1x1/al.svg


+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/am.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-am">
+  <path d="M0 0h512v170.667H0z" fill="red"/>
+  <path d="M0 170.667h512v170.666H0z" fill="#00f"/>
+  <path d="M0 341.333h512V512H0z" fill="orange"/>
+</svg>

+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/ao.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ao">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="red" d="M0 0h511.993v259.824H0z"/>
+    <path d="M0 252.2h511.993v259.824H0z"/>
+  </g>
+  <path d="M228.67 148.173c165.22 43.304 58.99 255.64-71.216 167.26l-8.817 13.545c76.628 54.658 152.57 10.66 173.9-46.358 22.297-58.788-7.52-141.48-92.51-150.03l-1.356 15.576z" fill-rule="evenodd" fill="#ffec00"/>
+  <path fill-rule="evenodd" fill="#ffec00" d="M169.955 330.827l21.73 10.125-10.142 21.696-21.73-10.125zm148.985-99.48h23.98v23.942h-23.98zm-11.684-38.892l22.342-8.694 8.707 22.31-22.342 8.693zm-25.894-29.188l17.035-16.85 16.877 17.01-17.035 16.85zm-26.284-39.787l22.434 8.455-8.468 22.4-22.434-8.455zM316.1 270.01l22.265 8.888-8.902 22.23-22.265-8.887zm-69.876 70.05l22.06-9.388 9.402 22.025-22.058 9.39zm-39.504 2.77h23.98v23.94h-23.98zm41.29-115.937l-20.35-15.006-20.245 14.47 8.034-22.92-20.348-14.956 24.447-.17 8.567-22.55 7.782 22.702 24.7-.242-19.586 15.232 6.996 23.44z"/>
+  <path d="M336.03 346.376c-1.21.418-6.23 12.39-9.675 18.248 1.797.51 2.56.596 3.625 1.025 13.655 4.8 20.384 9.18 26.186 17.504 2.888 2.79 7.032 2.93 10.198.697 0 0 2.795-1.114 6.43-5.02 2.968-4.52 2.194-8.11-1.384-11.16-10.944-7.952-22.9-13.902-35.38-21.295z" fill-rule="evenodd" fill="#fe0"/>
+  <path d="M365.247 372.842c0 2.388-1.94 4.324-4.33 4.324s-4.333-1.936-4.333-4.324 1.94-4.325 4.332-4.325 4.33 1.936 4.33 4.325zM343.87 359.17c0 2.388-1.94 4.324-4.33 4.324s-4.333-1.936-4.333-4.324 1.94-4.325 4.332-4.325 4.33 1.936 4.33 4.325zm10.898 6.975c0 2.39-1.94 4.325-4.33 4.325s-4.333-1.936-4.333-4.325 1.94-4.324 4.332-4.324 4.33 1.937 4.33 4.325z" fill-rule="evenodd"/>
+  <path d="M324.47 363.667c-42.57-24.273-87.31-50.52-129.88-74.796-18.75-11.635-19.683-33.384-7.17-49.875 1.302-2.337 2.836-1.758 3.514-.524 1.463 8.03 5.97 16.325 11.37 21.496 44.693 28.383 87.732 55.804 131.71 85.613-3.448 5.767-6.104 12.32-9.55 18.086z" fill-rule="evenodd" fill="#fe0"/>
+  <path fill-rule="evenodd" fill="#ffec00" d="M297.174 305.457l17.85 15.986-16.01 17.824-17.85-15.986z"/>
+  <path d="M331.54 348.82L206.58 273.3m109.53 58.093l-42.24-27.28m18.21 42.687l-42.75-24.755" stroke="#000" stroke-width="3.05" fill="none"/>
+</svg>

File diff suppressed because it is too large
+ 8 - 0
usbkvm-app/www/tocas/flags/1x1/aq.svg


+ 31 - 0
usbkvm-app/www/tocas/flags/1x1/ar.svg

@@ -0,0 +1,31 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-ar">
+  <path fill="#74acdf" d="M0 0h512v512H0z"/>
+  <path fill="#fff" d="M0 170.67h512v170.67H0z"/>
+  <g id="c" transform="translate(-153.6) scale(1.024)">
+    <path id="a" d="M396.84 251.31l28.454 61.992s.49 1.185 1.28.859c.79-.327.299-1.512.299-1.512l-23.715-63.956m-.68 24.12c-.347 9.428 5.452 14.613 4.694 23.032-.757 8.42 3.867 13.18 4.94 16.454 1.073 3.274-1.16 5.232-.198 5.698.963.466 3.07-2.12 2.383-6.775-.687-4.655-4.22-6.037-3.39-16.32.83-10.283-4.206-12.678-2.98-22.058" fill="#f6b40e" stroke="#85340a" stroke-width="1.112"/>
+    <use height="100%" width="100%" xlink:href="#a" transform="rotate(22.5 400 250)"/>
+    <use height="100%" width="100%" xlink:href="#a" transform="rotate(45 400 250)"/>
+    <use height="100%" width="100%" xlink:href="#a" transform="rotate(67.5 400 250)"/>
+    <path id="b" d="M404.31 274.41c.453 9.054 5.587 13.063 4.579 21.314 2.213-6.525-3.124-11.583-2.82-21.22m-7.649-23.757l19.487 42.577-16.329-43.887" fill="#85340a"/>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(22.5 400 250)"/>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(45 400 250)"/>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(67.5 400 250)"/>
+  </g>
+  <use height="100%" width="100%" xlink:href="#c" transform="rotate(90 256 256)"/>
+  <use height="100%" width="100%" xlink:href="#c" transform="rotate(180 256 256)"/>
+  <use height="100%" width="100%" xlink:href="#c" transform="rotate(-90 256 256)"/>
+  <circle r="28.445" cy="256" cx="256" fill="#f6b40e" stroke="#85340a" stroke-width="1.536"/>
+  <path id="h" d="M265.697 249.917c-1.942 0-3.802.842-4.896 2.592 2.188 1.97 7.021 2.183 10.304-.224-1.422-1.53-3.466-2.368-5.408-2.368zm-.032.448c1.89-.034 3.658.834 3.904 1.696-2.188 2.407-5.684 2.198-7.872.448.958-1.531 2.498-2.117 3.968-2.144z" fill="#843511"/>
+  <use height="100%" width="100%" xlink:href="#d" transform="matrix(-1 0 0 1 512.256 0)"/>
+  <use height="100%" width="100%" xlink:href="#e" transform="matrix(-1 0 0 1 512.256 0)"/>
+  <use height="100%" width="100%" xlink:href="#f" transform="translate(19.315)"/>
+  <use height="100%" width="100%" xlink:href="#g" transform="matrix(-1 0 0 1 512.256 0)"/>
+  <path d="M251.648 259.932c-.935.17-1.6 1-1.6 1.952 0 1.087.899 1.952 1.984 1.952.642 0 1.231-.304 1.6-.832.757.57 1.807.63 2.368.64.086.002.198 0 .256 0 .561-.01 1.61-.07 2.368-.64.369.528.958.832 1.6.832 1.085 0 1.984-.865 1.984-1.952 0-.951-.665-1.781-1.6-1.952.525.185.864.693.864 1.248a1.31 1.31 0 0 1-1.312 1.312 1.323 1.323 0 0 1-1.312-1.248c-.214.426-1.059 1.695-2.72 1.76-1.661-.065-2.506-1.333-2.72-1.76a1.323 1.323 0 0 1-1.312 1.248 1.31 1.31 0 0 1-1.312-1.312c0-.555.339-1.063.864-1.248zm2.14 5.827c-2.19 0-3.054 1.983-5.024 3.296 1.095-.437 1.956-1.3 3.488-2.176 1.532-.875 2.838.192 3.712.192h.032c.874 0 2.18-1.067 3.712-.192 1.533.876 2.426 1.74 3.52 2.176-1.97-1.313-2.867-3.296-5.056-3.296-.437 0-1.302.236-2.176.672h-.032c-.874-.437-1.739-.672-2.176-.672z" fill="#85340a"/>
+  <path d="M253.05 268.35c-.863.038-2.006.211-3.647.703 3.94-.874 4.809.448 6.56.448h.032c1.75 0 2.62-1.323 6.56-.448-4.377-1.312-5.248-.448-6.56-.448h-.032c-.82 0-1.472-.32-2.912-.256z" fill="#85340a"/>
+  <path d="M249.6 269.025c-.254.003-.531.005-.832.032 4.596.438 2.387 3.072 7.2 3.072H256c4.813 0 2.636-2.634 7.232-3.072-4.814-.437-3.292 2.4-7.232 2.4h-.032c-3.694 0-2.556-2.48-6.368-2.432zm10.342 7.107a3.94 3.94 0 0 0-3.938-3.939 3.94 3.94 0 0 0-3.939 3.939 4.05 4.05 0 0 1 3.939-3.112 4.047 4.047 0 0 1 3.938 3.112z" fill="#85340a"/>
+  <path id="e" d="M238.316 249.876c5.032-4.375 11.376-5.032 14.878-1.75.857 1.148 1.406 2.376 1.632 3.656.44 2.492-.338 5.183-2.29 7.942.22 0 .658.218.877.437 1.737-3.322 2.352-6.734 1.782-9.98a14.147 14.147 0 0 0-.686-2.493c-4.814-3.938-11.377-4.376-16.19 2.189z" fill="#85340a"/>
+  <path id="d" d="M246.19 248.566c2.843 0 3.5.657 4.814 1.75 1.314 1.095 1.97.875 2.188 1.095.217.22 0 .874-.437.655-.437-.22-1.314-.655-2.625-1.75-1.314-1.095-2.625-1.094-3.939-1.094-3.938 0-6.126 3.282-6.563 3.063-.437-.22 2.188-3.72 6.563-3.72z" fill="#85340a"/>
+  <use height="100%" width="100%" xlink:href="#h" transform="translate(-19.641)"/>
+  <circle id="f" cy="252.058" cx="246.313" r="1.969" fill="#85340a"/>
+  <path id="g" d="M240.937 253.379c3.72 2.845 7.44 2.626 9.627 1.312 2.188-1.312 2.188-1.75 1.751-1.75-.436 0-.873.438-2.624 1.312-1.752.877-4.376.877-8.752-.874z" fill="#85340a"/>
+</svg>

+ 33 - 0
usbkvm-app/www/tocas/flags/1x1/as.svg

@@ -0,0 +1,33 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-as">
+  <defs>
+    <clipPath id="a">
+      <path fill="gray" d="M496.06 15.937h496.06v496.06H496.06z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" transform="translate(-512 -16.45) scale(1.032)">
+    <path fill="#006" d="M0 15.937h992.13v496.06H0z"/>
+    <path d="M0 263.97L992.13 512V15.94L0 263.97z" fill-rule="evenodd" fill="#bd1021"/>
+    <path d="M992.13 42.512v442.91L106.3 263.962l885.83-221.46z" fill-rule="evenodd" fill="#fff"/>
+    <g stroke="#000">
+      <path stroke-linejoin="round" d="M825.487 319.59s-6.193-5.07 1.127-13.234c-3.942-3.378-.282-9.853-.282-9.853s-6.757-2.534.282-12.95c-5.068-3.38-2.816-10.982-2.816-10.982s-16.61-6.193-.844-12.104c-12.95 5.63-25.058-7.603-25.058-7.603l-18.863.564c-3.2-15.67-28.07-2.06-9.58-47.01-4.787-.846-10.136-2.253-15.485 1.688-5.35 3.94-20.553 12.387-29.562 3.94s5.91-20.552 6.194-20.833c.28-.28 19.99-10.417 22.804-17.173-.28-5.07-6.475-9.01-.845-19.99 6.475-10.418 46.17-20.273 64.2-23.65 8.726-3.943 12.668-11.544 12.668-11.544l1.97 7.32s39.98-11.825 41.95-17.456.846 5.068.846 5.068c15.766-1.408 35.755-14.92 38.57-8.728 13.233-2.534 38.573-13.795 38.573-13.795s8.727-.28 2.533 9.29c3.942 6.195-1.126 11.544-1.407 11.544-.283 0 1.688 6.193-3.38 9.572 1.69 5.35-3.097 9.572-3.097 9.572s2.254 6.476-6.756 9.854c.845 5.63-5.068 6.757-5.068 6.757s.845 5.913-3.097 8.447c0 4.504-4.504 6.757-4.504 6.757s2.815 1.688-1.126 4.503c-3.94 2.816-44.765 27.873-44.765 27.592 0-.282 29.843 5.35 31.813 6.475s24.495 16.05 24.495 16.05l-22.806 28.153s-25.338-2.815-26.464-1.408 5.35 1.97 6.756 4.223c1.41 2.252 3.66 7.603 8.165 7.04 4.504-.565-8.447 8.164-16.893 9.01 0 3.096 10.698 3.377 13.514.844 2.817-2.535-6.757 7.32-7.883 8.727s12.67-1.972 12.67-1.972-2.253 9.29-14.358 12.107c4.784 7.883 2.813 12.95 2.532 12.95s-7.884-7.883-15.204-6.475c1.97 7.602 7.884 14.64 9.574 15.767 1.688 1.126-13.233.844-15.204-3.38s-3.66 10.136 1.69 14.642c-6.194.28-11.544-3.38-11.544-3.38s-3.66 8.445-1.126 12.67c2.534 4.223-8.728-8.448-8.728-8.448l-21.397 9.01-4.787-8.165z" fill-rule="evenodd" stroke-width="1.706" fill="#9c3900"/>
+      <path d="M660.12 302.828c.5 0 31.083-.502 45.123-8.524 7.02 11.03 16.545 18.55 16.545 18.55l4.512-16.042s11.03.5 12.033 3.008c-1.504 3.007-2.005 7.018-2.005 7.018s7.52.503 8.02 1.504c.503 1.004-2.004 9.526-2.004 9.526l32.087 7.52s2.508-12.533 5.015-11.03c2.507 1.505 13.537 17.047 29.08 18.05s16.544-13.036 16.544-13.036l3.51 2.007s6.516-14.04 7.52-14.04 2.506 2.006 11.03 2.006c2.506 3.008 3.51 10.026 3.51 10.026s-9.528 9.527-6.52 17.048 3.51 5.514 3.51 5.514l69.19 16.545s3.51 5.515-2.507 8.523c0 .5-69.69-16.044-69.69-16.044s-6.52 7.52-11.532 6.015-1.503 3.008-1.503 3.008L906.79 366s5.517 7.02 1.506 9.025c-5.014.5-81.222-5.014-81.222-5.014s-4.512 9.527-9.525 1.505c-3.51 5.515-7.522-1.504-7.522-1.504s-6.517 5.015-7.52-.5c-5.516 4.01-9.025-2.507-9.025-2.507l-32.088-2.006-2.005 3.008s5.515 1.504-3.008 5.015c-8.523 3.51 51.138 2.005 52.643 2.505 1.504.503-4.01 5.015-4.01 5.015s30.583 2.005 36.097-4.512c5.516-6.52-2.005 8.522-2.005 8.522s24.066-1.002 24.066-2.005-.502 7.52-17.046 6.518c10.026 6.518 22.56 10.528 22.56 10.528s-12.534 3.01-27.073-.5c2.506 6.518 13.537 12.534 13.537 12.534s-8.02 7.02-26.07-10.028c5.014 9.025 1.002 12.536.5 11.532-.5-1.003-9.023-13.537-29.078-18.05 12.534 8.023 7.018 11.533 7.018 11.533s-6.517-11.53-17.046 0c-4.01-10.528-19.553-16.544-38.605-17.547-6.017-7.02-9.527-5.014-23.564-9.025-8.022-9.024-19.554-19.05-19.554-19.05s.502-13.54 14.038-12.034c1.504 4.512 1.504 3.008 1.504 3.008s15.042-5.516 19.554 2.005c6.518-11.532 15.542-1.724 17.046 2.286 4.32.633 26.07 1.223 26.07 1.223s-2.506-4.512-1.002-4.01c1.504.5 13.537-4.512 13.036-6.017-.502-1.505-1.003-6.518 1.002-6.017 2.006.5-17.046-2.507-27.575 5.516-3.51-3.512-1.003-13.038-1.003-13.038l-31.084-6.517-1.504 8.022s-9.025 1.504-8.523-.5c.502-2.008-2.005 7.017-2.005 7.017s-12.033-3.008-12.033-3.51 3.51-18.05 3.51-17.548c0 .503-10.028 1.003-24.066 11.532-4.01-12.534-35.597-29.08-35.597-29.58z" fill-rule="evenodd" stroke-width="1.82" fill="#ffc221"/>
+      <path d="M736.328 307.346l-6.518 29.08m12.533-18.052l-2.005 9.526m34.094-2.005l-3.008 9.025m58.663 52.136c-.5 0-16.043 2.005-18.05 1.504-2.004-.5 24.568 8.022 24.568 11.53m-34.595-9.512s-15.542-10.027-18.048-9.025c-2.507 1.003 15.542-.5 17.046-2.005m-31.088-.504s-16.043.5-17.547-1.003 15.542 11.03 18.55 10.03m-32.089-16.056c-.5 0-11.03-4.01-15.542-5.015 4.01 4.012 7.02 9.527 17.046 11.532m2.508-13.028c-.502-1.003-20.055-7.02-20.055-10.028 4.513 1.505 11.03 3.51 17.047 2.005m106.792-15.043l-2.005 9.023" stroke-width="1.82" fill="none"/>
+      <path d="M699.226 261.717s-21.058 18.048 0 28.577c1.003-7.02 2.507-8.02 2.507-8.02s17.547 6.516 28.076-9.026c-4.513-6.517-12.535-4.01-12.535-4.01s-16.546 0-18.05-7.52z" fill-rule="evenodd" stroke-width="1.82" fill="#ffc221"/>
+      <path d="M716.775 269.743l-14.54 12.534m59.319 74.519s3.352 3.695.343 8.207m70.197-4.508l-5.515.502m-39.609-3.517l10.027 1.503m16.943-27.287s.282 10.136-8.164 9.854c-8.446-.282-5.632.282-5.632.282" stroke-width="1.82" fill="none"/>
+      <path d="M820.424 330.003s3.378 1.126 2.534 3.66c-.845 2.534.844 9.854-9.01 16.893-10.418 2.252-9.29-8.727-9.29-8.727" stroke-width="1.82" fill="none"/>
+      <path d="M824.082 333.102s6.194-3.66 7.038 2.253c.844 5.91-5.067 16.892-9.29 18.582-4.225 1.688-9.01-.283-8.448-3.097m18.302-15.2s5.632-4.505 7.32 1.408c1.69 5.912-4.504 19.145-7.04 19.426m7.596-19.428s2.815-1.407 4.785.28m-13.795 19.989c-1.125.28-5.91.562-7.6-3.097m-17.73-6.758c-.282 0-5.913.283-5.913.283m27.586 21.965l-.562-9.29-2.25-3.098-3.943 3.942s-.564 9.29-2.252 10.136m2.251-10.425c-.28-.562-3.097-5.91-3.097-5.91l-4.787 5.91s-.562 8.447-2.252 9.292m2.247-9.579c0-.28-1.97-5.63-1.97-5.63s-5.63 3.097-6.195 5.35c-.562 2.25-.845 8.445-2.252 9.01m2.255-10.136s.564-5.067-1.126-5.067-9.29 7.038-9.572 13.232" stroke-width="1.82" fill="none"/>
+      <path stroke-linejoin="round" d="M699.918 261.868s2.815-2.816 3.66-6.194c.845-3.38-1.126-7.04 2.253-10.136 3.38-3.097 47.862-21.96 51.523-25.62 3.66-3.66 10.417-11.544 11.262-13.233.844-1.69 3.378 8.446-4.224 12.95 8.166-2.252 13.515-4.785 16.893-3.66-3.38 4.787-12.387 12.67-16.61 12.67 9.854-3.66 18.862-6.757 21.397-4.786 2.533 1.97-12.107 11.825-18.02 12.387 9.855-2.533 23.088-6.475 24.776-2.252-5.35 1.69-3.66 3.095-14.64 9.29-1.407 1.128-8.446 1.408-8.446 1.408 8.446-.845 19.99-4.223 21.115 1.97-6.756 2.534-9.29 5.914-14.92 7.32-5.632 1.41-18.583 3.943-26.466 7.04-7.884 3.097-19.428 12.106-19.428 12.106s-25.057.844-25.057.562c0-.282-4.786-11.543-5.068-11.824z" fill-rule="evenodd" stroke-width="1.82" fill="#fff"/>
+      <path d="M711.742 259.902s.282-5.63 2.816-7.6c2.533-1.972 15.203-6.76 18.02-10.982 2.814-4.223-4.224 7.32-3.098 10.417m-12.67-.284s6.194 2.254 4.786 7.04" stroke-width="1.82" fill="none"/>
+      <path d="M724.13 254.694a4.646 4.646 0 1 1-9.29.003 4.646 4.646 0 0 1 9.289-.004z" stroke-width="1.58" fill="none"/>
+      <path d="M914.738 244.697l48.707 9.29s5.35-6.193 2.534-9.57c7.32-1.69 5.348-11.263 5.348-11.263s8.446-3.66 1.408-12.107c4.788-4.786-1.126-8.446-1.126-8.446s1.97-8.445-4.223-9.29c1.69-6.756-10.7-9.01-10.7-9.01s-25.62 7.04-43.638 7.603c5.91 5.912-2.254 9.572-2.254 9.572s4.787 3.38 3.38 6.194c-1.41 2.815.843 5.912-5.35 7.883 8.164 3.66-.845 9.853-.845 9.853s9.01 6.194 6.758 9.29z" fill-rule="evenodd" stroke-width="1.82" fill="#fff"/>
+      <path d="M909.947 234.283s43.077 5.068 45.048 5.068 9.572 2.535 10.98 5.07M912.2 231.744l59.968 1.407m-59.682-2.813s56.87-3.378 60.813-9.29m-59.134-3.098s57.154-6.193 57.718-5.35m-59.683-1.688s55.464-8.728 56.026-7.32m-214.251-28.435s17.456 19.145 15.766 32.095" stroke-width="1.82" fill="none"/>
+      <path d="M768.615 197.117s5.63 8.164 7.883 9.01 21.96 1.97 23.087 10.416c1.126 5.35-4.223 3.66-3.378 7.6 1.407 5.07 14.64 11.544 29 3.943m-13.232 3.944s11.824 17.457 29.28-1.406m-9.011 7.603s14.358 7.602 26.183-12.106m-15.209 13.785s7.038 5.913 21.68-1.97m20.277-7.884s21.678 4.504 23.087 5.912m-14.925-10.689c.28 0 15.203.563 15.203.563m-24.498-9.014s25.9-1.69 29.28 3.66M872.78 208.66s36.32 1.407 38.01 3.378m-29.847 33.778s6.194-1.688 7.04-.843M866.87 261.02s8.166 7.04 18.584 3.943m-14.079 7.892s9.29 4.223 20.272 1.688m-17.173 5.341s9.29 6.194 15.485 5.067m-19.703-1.395s6.475 4.786 6.756 7.32m-15.764-1.696s1.97 10.134 9.01 13.794m-13.801-9.291s-3.097 13.233 4.787 21.398m-12.949-10.983c0 .28-.562 6.193-.28 6.757m-50.399-57.995l15.204-.846s5.63-2.252 1.688-5.91m1.972 3.384c.282 0 14.358 1.126 18.02 5.35 3.658 4.222 8.163 12.668 10.697 14.077 2.534 1.407 3.097-.564 3.097-.564m-6.196-2.251s-7.6 12.95-1.688 16.892m-2.543-2.535s-6.756 9.01-1.407 13.514m-1.405-1.134s-5.35 8.73 1.128 14.64m-3.489-37.789c-.363.363-6.54 4.723-8.72 3.634m2.182 10.166s2.543 2.542 4.723 2.18m-4.422 11.032l4.057 2.783m-3.511 7.331l3.51 2.118m-67.101-140.2s7.4 3.85 13.323 0c5.92-3.85 34.343-18.355 41.745-20.724 7.4-2.37 11.546-15.988 13.027-21.908m-5.624 15.987l41.45-12.14s6.81-5.624 7.105-15.986m-2.968 11.249s41.45-4.144 41.45-19.54m-6.508 10.658s43.522-11.842 47.667-16.283" stroke-width="1.82" fill="none"/>
+      <path d="M785.018 178.206s26.35-13.62 30.495-15.1c4.144-1.48 13.617-13.32-.593-13.32" stroke-width="1.82" fill="none"/>
+      <path d="M797.753 183.535c.296 0 21.612-13.916 28.717-15.69 3.85-5.33 1.777-10.955-4.736-9.77" stroke-width="1.82" fill="none"/>
+      <path d="M828.245 164.29c.592-.295 11.547-.59 7.698 7.994-5.624 4.145-29.903 16.284-29.903 16.284m16.58-33.455l46.19-15.396s3.848-7.994-1.776-9.178m38.491-13.915c0 .296 5.923 3.553 2.37 8.882-6.514 3.85-37.304 11.25-37.304 11.25m81.709-24.868l-43.52 12.14m40.258-2.37l-37.895 11.547m34.647-2.073l-33.455 10.066m27.231-.592c-.89 0-24.87 7.4-24.87 7.4m19.547.002l-15.396 6.217m11.547 2.072c-.593 0-13.323 5.625-13.323 5.625m9.474 1.184l-11.842 5.625m-8.591 7.107s1.48.592 1.185 2.368m-31.09 13.914s5.034 1.777.296 6.514c-2.368 3.257-9.177 2.37-13.322 8.29m45.306-81.121s6.22 1.48 1.48 9.474c-12.435 4.737-37.6 12.435-37.6 12.435s-1.183 2.072-4.44 3.85c-3.256 1.775-39.08 11.84-39.08 11.84m81.715-28.422s6.81 2.962 0 7.995c-7.698 4.44-34.64 12.73-34.64 12.73s-.296 2.37-1.48 3.257c-1.184.888-36.71 12.73-36.71 12.73" stroke-width="1.82" fill="none"/>
+      <path d="M912.336 142.974s7.106 2.072.89 7.993c-7.403 4.44-31.088 12.435-31.088 12.435s-2.368 2.96-6.217 4.145c-3.848 1.184-28.42 11.25-28.42 11.25m66.609-27.829c2.074.888 7.698 1.776.89 7.106-7.994 3.552-27.534 11.25-27.534 11.25l-1.777 3.257-31.086 13.323m61.282-26.942s2.96 3.553-3.553 7.698c-7.106 3.85-22.5 9.77-22.5 9.77m22.504-9.18s3.257 2.074-.887 5.034c-4.74 2.37-23.39 12.14-23.39 12.14l-12.14 7.992" stroke-width="1.82" fill="none"/>
+      <path d="M869.697 140.013c0 .296 5.033 4.44 3.256 9.178 4.442 3.258 3.553 6.81 3.553 6.81s6.217 3.553 5.33 8.586c6.217 1.48 5.92 5.034 5.92 5.034l-2.072 3.256s6.217-.296.888 7.698c3.257 1.776 1.777 3.85 1.777 3.85m-1.782-3.555c-.89 0-21.612 7.698-26.942 12.435" stroke-width="1.82" fill="none"/>
+      <path d="M836.543 171.693s6.217-.296 5.33 6.513c7.106-2.37 5.625 4.44 5.625 4.44s8.29-3.256 6.81 7.106c5.328-1.184 4.44 4.145 4.44 4.145s4.737-.296 4.737 2.37c3.257-2.962 6.81-1.482 6.81-1.482s2.368-3.256 5.624-2.368m-33.752-14.507c0 .592-27.83 15.987-27.83 15.987m33.153-10.955l-21.02 13.027m28.13-6.514c0 .297-18.356 10.955-18.356 10.955m22.506-6.81s-13.027 10.66-15.987 10.067m20.423-6.81s-7.402 5.626-13.62 8.29m21.318-10.657s2.368 2.96-12.434 10.657" stroke-width="1.82" fill="none"/>
+    </g>
+  </g>
+</svg>

+ 6 - 0
usbkvm-app/www/tocas/flags/1x1/at.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-at">
+  <g fill-rule="evenodd">
+    <path fill="#fff" d="M512 512H0V0h512z"/>
+    <path fill="#df0000" d="M512 512H0V341.33h512zm0-341.2H0V.13h512z"/>
+  </g>
+</svg>

+ 9 - 0
usbkvm-app/www/tocas/flags/1x1/au.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-au">
+  <g stroke-width="1pt">
+    <path fill="#006" d="M0 0h512v512H0z"/>
+    <path fill="#fff" d="M0 0v27.95L307.037 250h38.647v-27.95L38.647 0H0zm345.684 0v27.95L38.647 250H0v-27.95L307.037 0h38.647z"/>
+    <path fill="#fff" d="M144.035 0v250h57.614V0h-57.615zM0 83.333v83.333h345.684V83.333H0z"/>
+    <path fill="#c00" d="M0 100v50h345.684v-50H0zM155.558 0v250h34.568V0h-34.568zM0 250l115.228-83.334h25.765L25.765 250H0zM0 0l115.228 83.333H89.463L0 18.633V0zm204.69 83.333L319.92 0h25.764L230.456 83.333H204.69zM345.685 250l-115.228-83.334h25.765l89.464 64.7V250z"/>
+    <path fill-rule="evenodd" fill="#fff" d="M54.886 368.64l40.665 15.4 13.32-41.403 13.32 41.402 40.666-15.4-24.06 36.223 37.395 22.197-43.326 3.767 5.97 43.082-29.963-31.528-29.96 31.527 5.968-43.083-43.327-3.767 37.397-22.197m324.856 71.553l-18.823 1.638 2.597 18.712-13.02-13.692-13.02 13.692 2.598-18.71-18.823-1.64 16.247-9.645-10.458-15.736 17.675 6.693 5.78-17.99 5.783 17.99 17.675-6.692-10.458 15.737m16.247-270.353l-18.823 1.638 2.597 18.71-13.02-13.69-13.02 13.69 2.598-18.71-18.823-1.638 16.247-9.645-10.458-15.737 17.675 6.69 5.78-17.985 5.783 17.986 17.675-6.69-10.458 15.736m-88.752 123.393l-18.823 1.638 2.597 18.71-13.02-13.69-13.02 13.69 2.598-18.71-18.823-1.638 16.247-9.646-10.458-15.736 17.675 6.692 5.783-17.99 5.78 17.99 17.676-6.692-10.46 15.735m214.57-18.352l-18.83 1.638 2.59 18.71-13.02-13.69-13.02 13.69 2.59-18.71-18.795-1.638 16.275-9.646-10.48-15.736 17.69 6.692 5.74-17.99 5.81 17.99 17.64-6.692-10.43 15.736m-64.33 82.494l-10.29 6.377 2.892-11.752-9.247-7.805 12.074-.89 4.57-11.206 4.57 11.207 12.076.89-9.247 7.804 2.89 11.753"/>
+  </g>
+</svg>

+ 186 - 0
usbkvm-app/www/tocas/flags/1x1/aw.svg

@@ -0,0 +1,186 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-aw">
+  <defs>
+    <clipPath id="a">
+      <path fill="gray" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)">
+    <path fill="#39c" d="M0 0v512.006h768.01V0H0z"/>
+    <path fill="#ff0" d="M0 341.338v28.445h768.01v-28.445H0zm0 56.889v28.445h768.01v-28.445H0z"/>
+    <path fill="#9cc" d="M122.065 28.067l2.38 2.38-2.38-2.38zm-2.38 4.76l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M119.685 35.208l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M117.305 39.97l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c66" d="M122.065 39.97l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M126.826 39.97l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M117.305 42.35l2.38 2.38-2.38-2.38zm9.521 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M119.685 44.73l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M114.924 47.11l2.38 2.38-2.38-2.38z"/>
+    <path d="M121.673 32.904L104.986 96.16l-63.442 17.23 63.26 16.51 16.87 63.257L138.54 129.9l63.26-16.87-63.26-16.87-16.867-63.256z" stroke="#fff" stroke-width="2.975" fill="#c00"/>
+    <path fill="#6cc" d="M129.207 47.11l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M114.924 49.49l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M117.305 51.87l2.38 2.38-2.38-2.38m9.52 0l2.382 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M112.544 54.25l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M118.097 55.84l.794 1.585-.793-1.586m9.522 0l.793 1.585-.794-1.586z"/>
+    <path fill="#69c" d="M131.587 54.25l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M112.544 56.63l2.38 2.382-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M114.924 59.012l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M110.163 61.392l2.38 2.38-2.38-2.38zm23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M110.163 63.773l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M110.163 66.153l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M107.783 68.533l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M112.544 68.533l2.38 2.38-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M136.348 68.533l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M107.783 70.914l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M113.337 72.502l.793 1.586-.793-1.586m19.043 0l.793 1.586-.793-1.586z"/>
+    <path fill="#9cc" d="M136.348 70.914l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M107.783 73.294l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M110.163 75.675l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M105.403 78.055l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M110.956 79.643l.794 1.586-.794-1.587m23.804 0l.794 1.586-.794-1.587z"/>
+    <path fill="#9cc" d="M138.728 78.055l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M105.403 80.435l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M107.783 82.816l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M103.022 85.196l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M108.576 86.784l.793 1.587-.794-1.586m28.565 0l.794 1.587-.793-1.586z"/>
+    <path fill="#9cc" d="M141.11 85.196l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M103.022 87.577l2.38 2.38-2.38-2.38m38.087 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M105.403 89.957l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M100.642 92.337l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M105.403 92.337l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M143.49 92.337l2.38 2.38-2.38-2.38m-49.99 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M95.88 94.718l2.382 2.38-2.38-2.38m52.368 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M150.63 94.718l2.38 2.38-2.38-2.38m-64.27 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M88.74 97.098l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M98.26 97.098l2.382 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M100.642 97.098l2.38 2.38-2.38-2.38m42.847 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M145.87 97.098l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M155.39 97.098l2.382 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M157.77 97.098l2.382 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M76.838 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M79.218 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M81.6 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M91.12 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M95.088 100.27l1.587.795-1.587-.794m54.75 0l1.586.795-1.586-.794z"/>
+    <path fill="#fcc" d="M153.01 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M162.532 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M164.913 99.48l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M167.293 99.48l2.38 2.38-2.38-2.38m-97.596 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M72.077 101.86l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M74.457 101.86l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M83.98 101.86l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M87.947 102.652l1.587.793-1.587-.793m69.032 0l1.586.793-1.587-.793z"/>
+    <path fill="#fcc" d="M160.152 101.86l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M169.673 101.86l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M172.054 101.86l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M174.434 101.86l2.38 2.38-2.38-2.38m-111.88 2.38l2.382 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M64.936 104.24l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M76.838 104.24l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M80.806 105.032l1.587.794-1.587-.794m83.314 0l1.587.794-1.587-.794z"/>
+    <path fill="#fcc" d="M167.293 104.24l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M179.195 104.24l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M181.575 104.24l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M55.414 106.62l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M57.795 106.62l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M67.316 106.62l2.38 2.38-2.38-2.38zm109.499 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M186.336 106.62l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M188.717 106.62l2.38 2.38-2.38-2.38M48.273 109l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M50.654 109l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M60.175 109l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M64.143 109.793l1.587.793-1.587-.793m116.64 0l1.587.793-1.587-.793z"/>
+    <path fill="#fcc" d="M183.956 109l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M193.477 109l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M195.858 109l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M41.132 111.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M43.512 111.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M53.034 111.38l2.38 2.38-2.38-2.38zm138.063 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M200.62 111.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M203 111.38l2.38 2.38-2.38-2.38m-166.63 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c66" d="M48.273 113.76l2.38 2.38-2.38-2.38zm147.585 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M207.76 113.76l2.38 2.38-2.38-2.38m-166.628 2.38l2.38 2.382-2.38-2.38z"/>
+    <path fill="#ccf" d="M43.512 116.14l2.38 2.382-2.38-2.38z"/>
+    <path fill="#fcc" d="M53.034 116.14l2.38 2.382-2.38-2.38m138.063 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M200.62 116.14l2.38 2.382-2.38-2.38z"/>
+    <path fill="#9cc" d="M203 116.14l2.38 2.382-2.38-2.38z"/>
+    <path fill="#6cc" d="M48.273 118.522l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M50.654 118.522l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M60.175 118.522l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M64.143 119.314l1.587.794-1.587-.794m116.64 0l1.587.794-1.587-.794z"/>
+    <path fill="#fcc" d="M183.956 118.522l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M193.477 118.522l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M195.858 118.522l2.38 2.38-2.38-2.38m-140.444 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M57.795 120.902l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M67.316 120.902l2.38 2.38-2.38-2.38zm109.499 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M186.336 120.902l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M188.717 120.902l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M62.555 123.283l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M64.936 123.283l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M76.838 123.283l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M80.806 124.075l1.587.794-1.587-.795m83.314 0l1.587.794-1.587-.795z"/>
+    <path fill="#fcc" d="M167.293 123.283l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M179.195 123.283l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M181.575 123.283l2.38 2.38-2.38-2.38m-111.878 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M72.077 125.663l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M74.457 125.663l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M83.98 125.663l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M87.947 126.456l1.587.793-1.587-.794m69.032 0l1.586.793-1.587-.794z"/>
+    <path fill="#fcc" d="M160.152 125.663l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M169.673 125.663l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M172.054 125.663l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M174.434 125.663l2.38 2.38-2.38-2.38m-97.596 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M79.218 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M81.6 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M91.12 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M95.088 128.836l1.587.794-1.587-.794m54.75 0l1.586.794-1.586-.794z"/>
+    <path fill="#fcc" d="M153.01 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M162.532 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M164.913 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M167.293 128.043l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M86.36 130.424l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M88.74 130.424l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M98.26 130.424l2.382 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M100.642 130.424l2.38 2.38-2.38-2.38m42.847 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M145.87 130.424l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M155.39 130.424l2.382 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M157.77 130.424l2.382 2.38-2.38-2.38m-64.27 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M95.88 132.804l2.382 2.38-2.38-2.38m52.368 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M150.63 132.804l2.38 2.38-2.38-2.38m-49.988 2.38l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M105.403 135.185l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M143.49 135.185l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M105.403 137.565l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M103.022 139.945l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M108.576 141.533l.793 1.587-.794-1.587m28.565 0l.794 1.587-.793-1.587z"/>
+    <path fill="#ccf" d="M141.11 139.945l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M103.022 142.326l2.38 2.38-2.38-2.38m38.087 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M107.783 144.706l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M105.403 147.087l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M110.956 148.674l.794 1.587-.794-1.586m23.804 0l.794 1.587-.794-1.586z"/>
+    <path fill="#ccf" d="M138.728 147.087l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M105.403 149.467l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M110.163 151.847l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M107.783 154.228l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M113.337 155.816l.793 1.586-.793-1.586m19.043 0l.793 1.586-.793-1.586z"/>
+    <path fill="#cff" d="M136.348 154.228l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M107.783 156.608l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M107.783 158.99l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M112.544 158.99l2.38 2.38-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M136.348 158.99l2.38 2.38-2.38-2.38z"/>
+    <path fill="#cff" d="M110.163 161.37l2.38 2.38-2.38-2.38zm23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M110.163 163.75l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M110.163 166.13l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M114.924 168.51l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M112.544 170.89l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c33" d="M118.097 172.478l.794 1.587-.793-1.587m9.522 0l.793 1.587-.794-1.587z"/>
+    <path fill="#9cf" d="M131.587 170.89l2.38 2.38-2.38-2.38z"/>
+    <path fill="#69c" d="M112.544 173.27l2.38 2.38-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M117.305 175.65l2.38 2.382-2.38-2.38m9.52 0l2.382 2.38-2.38-2.38z"/>
+    <path fill="#9cf" d="M114.924 178.032l2.38 2.38-2.38-2.38zm14.283 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M114.924 180.412l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#fcc" d="M119.685 182.793l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M117.305 185.173l2.38 2.38-2.38-2.38m9.52 0l2.382 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M117.305 187.553l2.38 2.38-2.38-2.38z"/>
+    <path fill="#c66" d="M122.065 187.553l2.38 2.38-2.38-2.38z"/>
+    <path fill="#6cc" d="M126.826 187.553l2.38 2.38-2.38-2.38z"/>
+    <path fill="#ccf" d="M119.685 192.314l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
+    <path fill="#9cc" d="M119.685 194.695l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38m-2.38 4.76l2.38 2.38-2.38-2.38z"/>
+  </g>
+</svg>

+ 18 - 0
usbkvm-app/www/tocas/flags/1x1/ax.svg

@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ax">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M166.02 0h850v850h-850z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" transform="translate(-100) scale(.6024)">
+    <path fill="#0053a5" d="M0 0h1300v850H0z"/>
+    <g fill="#ffce00">
+      <path d="M400 0h250v850H400z"/>
+      <path d="M0 300h1300v250H0z"/>
+    </g>
+    <g fill="#d21034">
+      <path d="M475 0h100v850H475z"/>
+      <path d="M0 375h1300v100H0z"/>
+    </g>
+  </g>
+</svg>

+ 8 - 0
usbkvm-app/www/tocas/flags/1x1/az.svg

@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-az">
+  <path fill="#3f9c35" d="M0 0h512v512H0z"/>
+  <path fill="#ed2939" d="M0 0h512v341.333H0z"/>
+  <path fill="#00b9e4" d="M0 0h512v170.667H0z"/>
+  <circle cx="238.827" cy="256" r="76.8" fill="#fff"/>
+  <circle cx="255.893" cy="256" r="64" fill="#ed2939"/>
+  <path d="M324.16 213.333l8.164 22.958 22.006-10.46-10.46 22.006L366.826 256l-22.958 8.164 10.46 22.006-22.006-10.46-8.164 22.957-8.164-22.958-22.006 10.46 10.46-22.006L281.494 256l22.958-8.164-10.46-22.006 22.006 10.46 8.164-22.957z" fill="#fff"/>
+</svg>

+ 12 - 0
usbkvm-app/www/tocas/flags/1x1/ba.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ba">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)">
+    <path fill="#009" d="M0 0h512v512H0z"/>
+    <path d="M77 .006l436.91 436.91V.006H77z" fill="#fc0"/>
+    <path fill="#FFF" d="M461.41 470.395l-26.123-19.086-26.849 18.994 10.151-31.164-26.419-19.246 32.731.066 10.177-31.117 10.055 31.156 32.74.094-26.195 19.365 9.732 30.938zm76.714 10.447l-32.74-.094-10.055-31.156-10.177 31.117-32.731-.066 26.419 19.246-10.151 31.164 26.849-18.994 26.123 19.086-9.731-30.938 26.194-19.365zm-146.32-101.26l26.195-19.365-32.74-.094-10.055-31.156-10.177 31.117-32.731-.066 26.419 19.246-10.151 31.164 26.849-18.994 26.123 19.086-9.732-30.938zm-60.333-60.416l26.195-19.367-32.74-.092-10.055-31.156-10.177 31.117-32.731-.066 26.419 19.244-10.151 31.166 26.849-18.996 26.123 19.088-9.732-30.938zM271.804 259.5l26.195-19.368-32.74-.093-10.055-31.156L245.029 240l-32.732-.066 26.418 19.246-10.151 31.166 26.849-18.996 26.123 19.088-9.732-30.938zm-60.417-60.251l26.195-19.367-32.74-.093-10.055-31.156-10.177 31.117-32.731-.066 26.419 19.245-10.151 31.166 26.849-18.996 26.123 19.088-9.732-30.938zm-59.667-59.917l26.195-19.367-32.74-.093-10.055-31.156-10.177 31.117-32.731-.066 26.419 19.245-10.151 31.166 26.849-18.996 26.123 19.088-9.732-30.938zm-60-60l26.195-19.367-32.74-.093-10.054-31.156-10.177 31.117-32.731-.066 26.419 19.245-10.152 31.165 26.849-18.996 26.123 19.088-9.732-30.937zm-60-60L57.915-.035l-32.74-.093-10.054-31.156L4.944-.167l-32.731-.066 26.419 19.245-10.152 31.165 26.849-18.996 26.123 19.088-9.732-30.937z"/>
+  </g>
+</svg>

+ 6 - 0
usbkvm-app/www/tocas/flags/1x1/bb.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-bb">
+  <path fill="#00267f" d="M0-.2h512V512H0z"/>
+  <path fill="#ffc726" d="M170.667-.2h170.667V512H170.667z"/>
+  <path id="a" d="M256 173.312c-5.547 15.125-11.2 30.87-23.296 42.923 3.755-1.238 10.325-2.347 14.55-2.24v63.616l-17.963 2.667c-.64-.064-.853-1.066-.853-2.432-1.728-19.754-6.4-36.352-11.776-53.525-.383-2.347-7.188-11.307-1.94-9.728.64.085 7.66 2.944 6.55 1.58-9.558-9.9-23.53-17.025-37.1-19.137-1.194-.3-1.898.298-.83 1.685 18.004 27.712 33.065 60.416 32.937 99.22 6.998 0 23.958-4.137 30.976-4.137v44.885h8.854l2.026-125.355z"/>
+  <use height="100%" width="100%" xlink:href="#a" transform="matrix(-1 0 0 1 512 0)"/>
+</svg>

+ 4 - 0
usbkvm-app/www/tocas/flags/1x1/bd.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bd">
+  <path fill="#006a4e" d="M0 0h512v512H0z"/>
+  <circle cx="230" cy="256" r="170.667" fill="#f42a41"/>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/be.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-be">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path d="M0 0h170.664v512.01H0z"/>
+    <path fill="#ffd90c" d="M170.664 0h170.664v512.01H170.664z"/>
+    <path fill="#f31830" d="M341.328 0h170.665v512.01H341.328z"/>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/bf.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bf">
+  <g fill-rule="evenodd">
+    <path fill="#de0000" d="M512.063 511.55H.356V.003h511.707z"/>
+    <path fill="#35a100" d="M511.774 511.997H.068V256.224h511.706z"/>
+  </g>
+  <path fill-rule="evenodd" fill="#fff300" d="M389 223.773l-82.867 56.55 31.708 91.595-82.766-56.685-82.766 56.67 31.722-91.58-82.853-56.577 102.363.095 31.55-91.636 31.548 91.637"/>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/bg.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bg">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#d62612" d="M0 341.332h512v170.666H0z"/>
+    <path fill="#fff" d="M0 0h512v170.666H0z"/>
+    <path fill="#00966e" d="M0 170.666h512v170.666H0z"/>
+  </g>
+</svg>

+ 11 - 0
usbkvm-app/www/tocas/flags/1x1/bh.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bh">
+  <defs>
+    <clipPath id="a">
+      <path fill="gray" d="M119.03-196.66h708.66V512H119.03z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-86 142.09) scale(.7225)" stroke-width="1pt">
+    <path fill="#e10011" d="M0-196.66h1063V512H0z"/>
+    <path d="M216.66 511.66L0 512v-708.66l215.64.113 139.14 44.743-138.12 43.614 138.12 44.968-138.12 43.615L354.78 25.36 216.66 68.976l138.12 44.968-138.12 43.615 138.12 44.97-138.12 43.613 138.12 44.97-138.12 43.614 138.12 44.968-138.12 43.615 138.12 44.968-138.12 43.615" fill="#fff"/>
+  </g>
+</svg>

+ 15 - 0
usbkvm-app/www/tocas/flags/1x1/bi.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bi">
+  <defs>
+    <clipPath id="a">
+      <path fill="gray" d="M60.84 337h175v175h-175z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" fill-rule="evenodd" transform="translate(-178 -985.97) scale(2.9257)">
+    <path d="M0 337l146.56 87.5L0 512zm293.12 0l-146.56 87.5L293.12 512z" fill="#00cf00"/>
+    <path d="M0 337l146.56 87.5L293.12 337zm0 175l146.56-87.5L293.12 512z" fill="red"/>
+    <path d="M293.12 337h-27.31L0 495.7v16.305h27.31l265.81-158.7z" fill="#fff"/>
+    <path d="M197.168 424.496c0 27.948-22.656 50.604-50.604 50.604S95.96 452.444 95.96 424.496s22.656-50.604 50.604-50.604 50.604 22.656 50.604 50.604z" fill="#fff"/>
+    <path d="M0 337v16.305l265.81 158.7h27.31V495.7L27.31 337z" fill="#fff"/>
+    <path stroke="#00de00" stroke-width="1pt" fill="red" d="M156.523 405.41l-6.58.11-3.4 5.62-3.39-5.63-6.57-.14 3.18-5.75-3.16-5.768 6.57-.113 3.41-5.626 3.39 5.638 6.57.14-3.19 5.748zm-22.043 38.16l-6.58.11-3.4 5.62-3.39-5.63-6.57-.14 3.18-5.75-3.16-5.768 6.57-.113 3.41-5.626 3.39 5.638 6.57.14-3.19 5.748zm44.627 0l-6.58.11-3.4 5.62-3.39-5.63-6.57-.14 3.18-5.75-3.16-5.768 6.57-.113 3.41-5.626 3.39 5.638 6.57.14-3.19 5.748z"/>
+  </g>
+</svg>

+ 14 - 0
usbkvm-app/www/tocas/flags/1x1/bj.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bj">
+  <defs>
+    <clipPath id="a">
+      <path fill="gray" d="M67.64-154h666v666h-666z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" transform="translate(-52 118.39) scale(.7688)">
+    <g fill-rule="evenodd" stroke-width="1pt">
+      <path fill="#319400" d="M0-154h333v666H0z"/>
+      <path fill="#ffd600" d="M333-154h666v333H333z"/>
+      <path fill="#de2110" d="M333 179h666v333H333z"/>
+    </g>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/bl.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bl">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#fff" d="M0 0h512.005v512H0z"/>
+    <path fill="#00267f" d="M0 0h170.667v512H0z"/>
+    <path fill="#f31830" d="M341.333 0H512v512H341.333z"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 88 - 0
usbkvm-app/www/tocas/flags/1x1/bm.svg


File diff suppressed because it is too large
+ 20 - 0
usbkvm-app/www/tocas/flags/1x1/bn.svg


File diff suppressed because it is too large
+ 354 - 0
usbkvm-app/www/tocas/flags/1x1/bo.svg


+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/bq.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bq">
+  <path d="M0 0h512v512H0z" fill="#21468b"/>
+  <path d="M0 0h512v341.3H0z" fill="#fff"/>
+  <path d="M0 0h512v170.7H0z" fill="#ae1c28"/>
+</svg>

File diff suppressed because it is too large
+ 9 - 0
usbkvm-app/www/tocas/flags/1x1/br.svg


+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/bs.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bs">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M56.618 26.364h480.31v480.31H56.618z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="matrix(1.066 0 0 1.067 -60.354 -28.133)">
+    <path fill="#fff" d="M990.01 506.18H9.39V27.64h980.62z"/>
+    <path fill="#ffe900" d="M990.01 370.57H9.39V169.25h980.62z"/>
+    <path fill="#08ced6" d="M990.01 506.18H9.39V346.67h980.62zm0-318.89H9.39V27.78h980.62z"/>
+    <path d="M8.925 25.872c2.177 0 392.37 236.97 392.37 236.97L7.835 505.382 8.92 25.872z"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 38 - 0
usbkvm-app/www/tocas/flags/1x1/bt.svg


+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/bv.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bv">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#a)">
+    <path fill="#fff" d="M-68 0h699.74v512H-68z"/>
+    <path fill="#d72828" d="M-92.992-77.837h218.72v276.26h-218.72zM249.42-.572h380.91v199H249.42zM-67.545 320.01h190.33v190.33h-190.33zM252 322.12h378.34v188.21H252z"/>
+    <path fill="#003897" d="M156.65-25.447h64.425v535.78H156.65z"/>
+    <path fill="#003897" d="M-67.545 224.84h697.88v63.444h-697.88z"/>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/bw.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-bw">
+  <g fill-rule="evenodd">
+    <path fill="#00cbff" d="M0 0h511.993v511.984H0z"/>
+    <path fill="#fff" d="M0 191.99h511.993v128.002H0z"/>
+    <path d="M0 212.675h511.993v86.438H0z"/>
+  </g>
+</svg>

+ 59 - 0
usbkvm-app/www/tocas/flags/1x1/by.svg

@@ -0,0 +1,59 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-by">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h496.06v496.06H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="scale(1.032)">
+    <path fill="#b20000" d="M0 0h992.13v329.53H0z"/>
+    <path fill="#429f00" d="M0 329.53h992.13v166.54H0z"/>
+    <path fill="#fff" d="M0 0h109.84v496.06H0z"/>
+    <g stroke-width="1pt" fill="#b20000">
+      <path d="M5.23 8.402h5.23v8.41H5.23zm15.693 0h15.692v8.41H20.923zM26.148-.01h5.23V8.4h-5.23zm26.159 0h5.23V8.4h-5.23zm20.917 8.412h15.692v8.41H73.224zM78.465-.01h5.23V8.4h-5.23z"/>
+      <path d="M15.697 16.81H26.16v8.41H15.696zm15.693 0h10.46v8.41H31.39zm36.61 0h10.46v8.41H68zm15.69 0h10.463v8.41H83.69zm-73.234 8.41h10.462v8.408H10.456zm26.159 0h10.46v8.408h-10.46zm26.158 0h10.462v8.408H62.773zm26.143 0h10.462v8.408H88.916zM99.383 8.402h5.23v8.41h-5.23zM5.23 33.628h10.462v8.408H5.232zm36.61 0h10.462v8.408H41.84zm52.317 0h10.462v8.408H94.156zM10.456 58.85h10.462v8.41H10.456zm5.241 8.41H26.16v8.407H15.696zm20.918-8.41h10.46v8.41h-10.46zm-5.225 8.41h10.46v8.407H31.39zm-10.467 8.407h15.692v8.408H20.923z"/>
+      <path d="M26.148 84.074h5.23v8.41h-5.23zm36.625-25.222h10.462v8.408H62.773zM68 67.26h10.46v8.407H68zm20.916-8.41h10.462v8.41H88.916zm-5.226 8.41h10.463v8.407H83.69zm-10.466 8.407h15.692v8.408H73.224z"/>
+      <path d="M78.465 84.074h5.23v8.41h-5.23zm-26.158-8.407h5.23v8.408h-5.23zm-52.302 0h5.23v8.408H.005zm104.603 0h5.23v8.408h-5.23zm-78.46 42.04h5.23v8.408h-5.23z"/>
+      <path d="M20.923 126.114h15.692v8.408H20.923zm-5.226 8.408H41.85v8.408H15.698zm62.768-16.815h5.23v8.408h-5.23z"/>
+      <path d="M73.224 126.114h15.692v8.408H73.224zM68 134.522h26.153v8.408H68zm5.224 42.04h26.154v8.408H73.224zM62.773 142.93h36.614v8.41H62.773zm-52.317 0H47.07v8.41H10.457zm5.241 42.04H31.39v8.408H15.696zm-5.241-8.408H36.61v8.408H10.456zm73.234-16.816h26.155v8.408H83.69zm-5.225 25.224h15.692v8.408H78.465z"/>
+      <path d="M20.923 193.377h5.23v8.41h-5.23zm62.767 0h5.23v8.41h-5.23zM.005 159.746H26.16v8.408H.004zm47.075 16.816h15.693v8.408H47.08zm5.227 8.408h5.23v8.408h-5.23zm-15.692-25.224H73.23v8.408H36.614zM57.532 33.628h10.462v8.408H57.532z"/>
+      <path d="M47.08 42.035h15.693v8.408H47.08zm-5.24 8.408h10.462v8.41H41.84zm15.692 0h10.462v8.41H57.532zM.005 42.035h10.462v8.408H.005zm5.225 8.408h10.462v8.41H5.232zm94.153-8.408h10.462v8.408H99.383zm-5.226 8.408h10.462v8.41H94.156zM.005 126.114h5.23v8.408H.005zm104.603 0h5.23v8.408h-5.23zM47.08 193.377h15.693v8.41H47.08z"/>
+      <path d="M41.84 201.786h10.462v8.408H41.84zm15.692 0h10.462v8.408H57.532zm-20.917 8.408h10.46v8.408h-10.46zm26.158 0h10.462v8.408H62.773z"/>
+      <path d="M31.39 218.6h10.46v8.41H31.39zm36.61 0h10.46v8.41H68zm-41.852 8.41H36.61v8.408H26.148zm47.076 0h10.462v8.408H73.224z"/>
+      <path d="M15.697 235.417H31.39v8.408H15.696zm62.768 0h15.692v8.408H78.465z"/>
+      <path d="M88.916 227.01h10.462v8.408H88.916zm5.241-8.41h10.462v8.41H94.156z"/>
+      <path d="M99.383 210.194h10.462v8.408H99.383zM10.456 227.01h10.462v8.408H10.456zM5.23 218.6h10.462v8.41H5.232z"/>
+      <path d="M.005 210.194h10.462v8.408H.005zm20.918 33.631h5.23v8.408h-5.23zm62.767 0h5.23v8.408h-5.23zM52.307 218.6h5.23v8.41h-5.23zm-15.692 25.225h5.23v8.408h-5.23zm31.385 0h5.23v8.408H68zm-15.693 0h5.23v8.408h-5.23zm-52.302 0h5.23v8.408H.005zm104.603 0h5.23v8.408h-5.23zM52.307 126.114h5.23v8.408h-5.23zM26.148 42.035h5.23v8.408h-5.23zm52.317 0h5.23v8.408h-5.23zM47.08 100.89h15.693v8.41H47.08z"/>
+      <path d="M36.615 109.298h15.692v8.41H36.615z"/>
+      <path d="M41.84 117.707h5.23v8.408h-5.23zM31.39 100.89h10.46v8.41H31.39z"/>
+      <path d="M36.615 92.483h15.692v8.408H36.615z"/>
+      <path d="M41.84 84.074h5.23v8.41h-5.23zm15.692 8.409h15.692v8.408H57.532z"/>
+      <path d="M62.773 84.074h5.23v8.41h-5.23zM68 100.89h10.46v8.41H68z"/>
+      <path d="M57.532 109.298h15.692v8.41H57.532z"/>
+      <path d="M62.773 117.707h5.23v8.408h-5.23zM83.69 100.89h10.463v8.41H83.69z"/>
+      <path d="M88.916 92.483h15.692v8.408H88.916z"/>
+      <path d="M99.383 100.89h10.462v8.41H99.383z"/>
+      <path d="M88.916 109.298h15.692v8.41H88.916z"/>
+      <path d="M94.157 117.707h5.23v8.408h-5.23zm0-33.633h5.23v8.41h-5.23zM.005 100.89h10.462v8.41H.005z"/>
+      <path d="M5.23 92.483h15.693v8.408H5.23z"/>
+      <path d="M15.697 100.89H26.16v8.41H15.696z"/>
+      <path d="M5.23 109.298h15.693v8.41H5.23z"/>
+      <path d="M10.456 117.707h5.23v8.408h-5.23zm0-33.633h5.23v8.41h-5.23zM5.23 151.338h20.923v8.408H5.23zm26.16 0h20.92v8.408H31.39zm26.142 0h20.923v8.408H57.532zm26.158 0h20.923v8.408H83.69zm-41.85 16.815h26.154v8.41H41.84zm-36.61 0h26.154v8.41H5.23zm73.235 0h26.154v8.41H78.464zm26.143 33.633h5.23v8.408h-5.23zm-104.603 0h5.23v8.408H.005zM5.23 487.657h5.23v-8.408H5.23zm15.693 0h15.692v-8.408H20.923z"/>
+      <path d="M26.148 496.057h5.23v-8.408h-5.23zm26.159 0h5.23v-8.408h-5.23zm20.917-8.4h15.692v-8.408H73.224z"/>
+      <path d="M78.465 496.057h5.23v-8.408h-5.23zm-62.768-16.812H26.16v-8.408H15.696zm15.693 0h10.46v-8.408H31.39zm36.61 0h10.46v-8.408H68zm15.69 0h10.463v-8.408H83.69zm-47.075-8.412h10.46v-8.408h-10.46zm26.158 0h10.462v-8.408H62.773zm26.143 0h10.462v-8.408H88.916zm10.467 16.824h5.23v-8.408h-5.23zM5.23 462.433h10.462v-8.408H5.232z"/>
+      <path d="M41.84 462.433h10.462v-8.408H41.84zm52.317 0h10.462v-8.408H94.156zM10.456 437.21h10.462v-8.41H10.456zm5.241-8.413H26.16v-8.408H15.696zm20.918 8.413h10.46v-8.41h-10.46zm-5.225-8.413h10.46v-8.408H31.39zm-10.467-8.412h15.692v-8.408H20.923z"/>
+      <path d="M26.148 411.985h5.23v-8.408h-5.23zm36.625 25.225h10.462v-8.41H62.773zM68 428.797h10.46v-8.408H68zm20.916 8.413h10.462v-8.41H88.916zm-5.226-8.413h10.463v-8.408H83.69zm-10.466-8.412h15.692v-8.408H73.224z"/>
+      <path d="M78.465 411.985h5.23v-8.408h-5.23zm-26.158 8.4h5.23v-8.408h-5.23zm-52.302 0h5.23v-8.408H.005zm104.603 0h5.23v-8.408h-5.23zm-78.46-42.035h5.23v-8.41h-5.23z"/>
+      <path d="M20.923 369.95h15.692v-8.41H20.923zm-5.226-8.413H41.85v-8.408H15.698zm62.768 16.813h5.23v-8.41h-5.23z"/>
+      <path d="M73.224 369.95h15.692v-8.41H73.224zM68 361.537h26.153v-8.408H68zm5.224-42.035h26.154v-8.41H73.224zm-10.451 33.624h36.614v-8.41H62.773zm-52.317 0H47.07v-8.41H10.457zm5.241-42.036H31.39v-8.412H15.696zm-5.241 8.412H36.61v-8.41H10.456zm73.234 16.812h26.155v-8.41H83.69zm-5.225-25.224h15.692v-8.41H78.465zM.005 336.314H26.16v-8.41H.004zm47.075-16.812h15.693v-8.41H47.08zm5.227-8.412h5.23v-8.41h-5.23zm-15.692 25.224H73.23v-8.41H36.614zm20.917 126.119h10.462v-8.408H57.532zM47.08 454.02h15.693v-8.407H47.08zm-5.24-8.41h10.462v-8.41H41.84zm15.692 0h10.462v-8.41H57.532zM.005 454.02h10.462v-8.407H.005zm5.225-8.41h10.462v-8.41H5.232zm94.153 8.41h10.462v-8.407H99.383zm-5.226-8.41h10.462v-8.41H94.156zM.005 369.95h5.23v-8.41H.005zm104.603 0h5.23v-8.41h-5.23zM41.84 294.278h10.462v-8.41H41.84zm15.692 0h10.462v-8.41H57.532zm-20.917-8.412h10.46v-8.41h-10.46zm26.158 0h10.462v-8.41H62.773zm-31.383-8.412h10.46v-8.41H31.39zm36.61 0h10.46v-8.41H68z"/>
+      <path d="M26.148 269.054H36.61v-8.41H26.148zm47.076 0h10.462v-8.41H73.224zm-57.527-8.412H31.39v-8.41H15.696zm62.768 0h15.692v-8.41H78.465zm10.451 8.412h10.462v-8.41H88.916z"/>
+      <path d="M94.157 277.454h10.462v-8.41H94.156zm5.226 8.412h10.462v-8.41H99.383zm-88.927-16.812h10.462v-8.41H10.456z"/>
+      <path d="M5.23 277.454h10.462v-8.41H5.232zm-5.225 8.412h10.462v-8.41H.005zm20.918-33.633h5.23v-8.408h-5.23zm31.384 25.221h5.23v-8.41h-5.23zm0 92.496h5.23v-8.41h-5.23zm-26.159 84.07h5.23v-8.407h-5.23zm52.317 0h5.23v-8.407h-5.23zM47.08 395.173h15.693v-8.408H47.08zm-10.465-8.413h15.692v-8.407H36.615zm5.225-8.41h5.23v-8.41h-5.23zm-10.45 16.823h10.46v-8.408H31.39z"/>
+      <path d="M36.615 403.573h15.692v-8.408H36.615zm5.225 8.412h5.23v-8.408h-5.23zm15.692-8.412h15.692v-8.408H57.532zm5.241 8.412h5.23v-8.408h-5.23z"/>
+      <path d="M68 395.173h10.46v-8.408H68zm-10.468-8.413h15.692v-8.407H57.532zm5.241-8.41h5.23v-8.41h-5.23zm20.917 16.823h10.463v-8.408H83.69z"/>
+      <path d="M88.916 403.573h15.692v-8.408H88.916z"/>
+      <path d="M99.383 395.173h10.462v-8.408H99.383zm-10.467-8.413h15.692v-8.407H88.916zm5.241-8.41h5.23v-8.41h-5.23zm0 33.635h5.23v-8.408h-5.23zM.005 395.173h10.462v-8.408H.005z"/>
+      <path d="M5.23 403.573h15.693v-8.408H5.23z"/>
+      <path d="M15.697 395.173H26.16v-8.408H15.696zM5.23 386.76h15.693v-8.407H5.23zm5.226-8.41h5.23v-8.41h-5.23zm0 33.635h5.23v-8.408h-5.23zm-5.226-67.26h20.923v-8.408H5.23zm26.16 0h20.92v-8.408H31.39zm26.142 0h20.923v-8.408H57.532zm26.158 0h20.923v-8.408H83.69zm-41.85-16.823h26.154v-8.41H41.84zm-36.61 0h26.154v-8.41H5.23zm73.235 0h26.154v-8.41H78.464zm26.143-33.624h5.23v-8.41h-5.23zm-104.603 0h5.23v-8.41H.005zm47.075-42.045h5.23v8.41h-5.23zm10.452 0h5.23v8.41h-5.23zm0-16.816h5.23v8.408h-5.23zm-10.452 0h5.23v8.408h-5.23zM10.456 462.433h10.462v8.41H10.456zM83.69 302.678h5.23v-8.41h-5.23zm-62.767 0h5.23v-8.41h-5.23zm26.155-8.404H62.77v8.407H47.078z"/>
+    </g>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 19 - 0
usbkvm-app/www/tocas/flags/1x1/bz.svg


+ 4 - 0
usbkvm-app/www/tocas/flags/1x1/ca.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ca">
+  <path fill="#fff" d="M81.32 3.025h362.275v512H81.32z" transform="translate(-.182 -3.025)"/>
+  <path fill="#bf0a30" d="M-99.818 3.025H81.32v512H-99.818zm543.413 0h181.138v512H443.595zM135.49 250.44l-14.067 4.808 65.456 57.446c4.95 14.764-1.72 19.116-5.97 26.86l71.06-9.02-1.85 71.512 14.718-.423-3.21-70.918 71.13 8.432c-4.402-9.297-8.32-14.233-4.247-29.098l65.414-54.426-11.447-4.144c-9.36-7.222 4.044-34.784 6.066-52.178 0 0-38.195 13.135-40.698 6.262l-9.727-18.685-34.747 38.17c-3.796.91-5.413-.6-6.304-3.808l16.053-79.766-25.42 14.297c-2.128.91-4.256.125-5.658-2.355l-24.445-49.073-25.21 50.952c-1.9 1.826-3.802 2.037-5.38.796L202.8 142.505l14.53 79.143c-1.156 3.142-3.924 4.026-7.18 2.325l-33.216-37.737c-4.345 6.962-7.29 18.336-13.033 20.885-5.744 2.388-24.98-4.822-37.873-7.636 4.404 15.895 18.176 42.302 9.46 50.957z" transform="translate(-.182 -3.025)"/>
+</svg>

File diff suppressed because it is too large
+ 10 - 0
usbkvm-app/www/tocas/flags/1x1/cc.svg


+ 12 - 0
usbkvm-app/www/tocas/flags/1x1/cd.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cd">
+  <defs>
+    <clipPath id="a">
+      <path fill="#fff" d="M0-88h600v600H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" transform="matrix(.853 0 0 .853 0 75.093)">
+    <path fill="#007fff" d="M0-88h800v600H0z"/>
+    <path d="M36 32h84l26-84 26 84h84l-68 52 26 84-68-52-68 52 26-84-68-52zM750-88L0 362v150h50L800 62V-88h-50" fill="#f7d618"/>
+    <path d="M800-88L0 392v120L800 32V-88" fill="#ce1021"/>
+  </g>
+</svg>

+ 15 - 0
usbkvm-app/www/tocas/flags/1x1/cf.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cf">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)">
+    <path fill="#00f" d="M-52-.506h768v127H-52z"/>
+    <path fill="#ff0" d="M-52 383.5h768V512H-52z"/>
+    <path fill="#009a00" d="M-52 255h768v128.5H-52z"/>
+    <path fill="#fff" d="M-52 126.49h768v128.5H-52z"/>
+    <path fill="red" d="M268 0h128v512H268z"/>
+    <path fill="#ff0" d="M109.493 112.306L75.95 89.11l-33.434 23.424L54.12 73.33 21.604 48.645l40.723-1.034L75.66 8.937l13.562 38.56 40.758.782-32.336 24.866"/>
+  </g>
+</svg>

+ 12 - 0
usbkvm-app/www/tocas/flags/1x1/cg.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cg">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M115.74 0H611.8v496.06H115.74z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-119.46) scale(1.032)" stroke-width="1pt">
+    <path fill="#ff0" d="M0 0h744.09v496.06H0z"/>
+    <path d="M0 0v496.06L496.06 0H0z" fill="#00ca00"/>
+    <path d="M248.03 496.06h496.06V0L248.03 496.06z" fill="red"/>
+  </g>
+</svg>

+ 9 - 0
usbkvm-app/www/tocas/flags/1x1/ch.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ch">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#d52b1e" d="M0 0h511.984v511.983H0z"/>
+    <g fill="#fff">
+      <path d="M95.994 207.993h319.99v95.994H95.993z"/>
+      <path d="M207.99 95.995h95.995v319.99H207.99z"/>
+    </g>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/ci.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ci">
+  <g fill-rule="evenodd">
+    <path fill="#00cd00" d="M341.46 0h170.533v511.984H341.46z"/>
+    <path fill="#ff9a00" d="M0 0h170.3v511.984H0z"/>
+    <path fill="#fff" d="M170.3 0h171.16v511.984H170.3z"/>
+  </g>
+</svg>

+ 9 - 0
usbkvm-app/www/tocas/flags/1x1/ck.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ck">
+  <path fill="#006" d="M0 0h512v512H0z"/>
+  <g stroke-width="1pt">
+    <path d="M0 0v20.46L325.08 183H366v-20.46L40.92 0H0zm366 0v20.46L40.92 183H0v-20.46L325.08 0H366z" fill="#fff"/>
+    <path d="M152.5 0v183h61V0h-61zM0 61v61h366V61H0z" fill="#fff"/>
+    <path d="M0 73.2v36.6h366V73.2H0zM164.7 0v183h36.6V0h-36.6zM0 183l122-61h27.28l-122 61H0zM0 0l122 61H94.72L0 13.64V0zm216.72 61l122-61H366L244 61h-27.28zM366 183l-122-61h27.28L366 169.36V183z" fill="#c00"/>
+  </g>
+  <path d="M336.822 250.103l5.71-18.307-15.39-11.693 19.39-.247 6.46-18.053 6.27 18.15 19.392.533-15.516 11.463 5.522 18.39-15.86-11.07m29.706 14.431l11.434-15.3-10.633-16.252 18.35 6.364 12.054-14.81-.094 19.233 18.093 7.1-18.41 5.52-.878 19.202-11.28-15.822m-108.066 16.443l-.762-19.185-18.39-5.694 18.153-6.915.03-19.206 11.976 14.91 18.416-6.183-10.754 16.13 11.353 15.392-18.625-4.946m-43.593 44.883l-8.053-17.376-19.127 2.004 14.078-13.528-7.332-17.707 16.748 9.017 14.6-12.957-3.728 19.1 16.358 9.707-19.054 2.786m-19.19 61.043l-14.618-12.198-16.433 10.127 7-18.342-14.107-12.81 18.942.864 7.714-18.054 4.703 18.877 18.88 1.657-16.036 10.802m3.605 66.357l-18.195-5.29-11.105 15.923-.77-19.654-17.97-6.058 17.718-6.852-.005-19.677 11.72 15.42 17.973-6.1-10.475 16.382m32.416 55.849l-18.75 2.63-3.804 19.12-8.545-17.658-18.848 1.834 13.47-13.537-7.855-17.993 16.87 9.292 14.002-12.955-3.045 19.28M300.1 455.57l-16.704 9.035 2.938 19.275-14.03-13.578-17.065 8.32 8.032-17.42-13.495-14.136 18.995 2.812 8.732-17.062 3.705 19.162m59.126 9.852l-9.115 16.827 12.85 14.51-19.067-3.59-9.802 16.433-2.664-19.042-18.92-4.35 17.42-8.18-1.886-19.13 13.432 13.99m62.938-14.418l-.568 19.194 17.952 6.99-18.588 5.604-1.358 19.156-10.915-15.727-18.8 4.857 11.844-15.324-10.26-16.162 18.235 6.257m59.811-223.19l13.118 13.842 17.487-8.116-9.062 17.39 12.54 14.39-18.714-3.096-9.734 17.02-2.504-19.305-18.562-3.878 17.17-8.833m37.542 23.181l5.955 18.225 19.225.323-15.567 11.73 5.2 18.466-15.57-10.977-16.017 11.1 5.946-18.513-15.102-11.615 19.246-.464m21.447 36.475l-2.204 19.07 17.29 8.538-18.998 3.952-2.987 18.965-9.532-16.626-19.143 3.188 13.106-14.227-8.844-17.002 17.633 7.835m3.28 43.705l-8.53 17.14 13.34 14.046-19.177-2.91-9.23 16.767-3.32-18.935-19.056-3.68 17.128-8.79-2.542-19.05 13.904 13.505m-10.825 42.954l-16.116 10.07 4.114 19.054-14.835-12.668-16.52 9.382 6.948-17.895-14.334-13.258 19.13 1.608 7.67-17.58 4.872 18.892" fill-rule="evenodd" fill="#fff"/>
+</svg>

+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/cl.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cl">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h708.66v708.66H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="scale(.722)" fill-opacity=".996">
+    <path fill="#fff" d="M354.31 0h708.68v354.34H354.31z"/>
+    <path fill="#0039a6" d="M0 0h354.34v354.34H0z"/>
+    <path d="M232.273 265.338l-54.883-41.16-54.615 41.564 20.312-67.543-54.514-41.708 67.444-.582 20.92-67.338 21.366 67.183 67.444.09-54.234 42.1 20.76 67.393z" fill="#fff"/>
+    <path fill="#d52b1e" d="M0 354.34h1063v354.32H0z"/>
+  </g>
+</svg>

+ 15 - 0
usbkvm-app/www/tocas/flags/1x1/cm.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-cm">
+  <path fill="#007a5e" d="M0 0h170.667v512H0z"/>
+  <path fill="#ce1126" d="M170.667 0h170.667v512H170.667z"/>
+  <path fill="#fcd116" d="M341.333 0H512v512H341.333z"/>
+  <g transform="translate(256 256) scale(5.6889)" fill="#fcd116">
+    <g id="b">
+      <path id="a" d="M0-8L-2.472-.392 1.332.845z"/>
+      <use height="100%" width="100%" xlink:href="#a" transform="scale(-1 1)"/>
+    </g>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(72)"/>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(144)"/>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(-144)"/>
+    <use height="100%" width="100%" xlink:href="#b" transform="rotate(-72)"/>
+  </g>
+</svg>

+ 11 - 0
usbkvm-app/www/tocas/flags/1x1/cn.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-cn">
+  <defs>
+    <path id="a" fill="#ffde00" d="M.95-.31L-.587.81 0-1 .588.81-.952-.31z"/>
+  </defs>
+  <path d="M0 0h512v512H0z" fill="#de2910"/>
+  <use xlink:href="#a" transform="matrix(76.8 0 0 76.8 128 128)" width="30" height="20"/>
+  <use xlink:href="#a" transform="matrix(-13.1584 -21.9392 21.9392 -13.1584 256 51.2)" width="30" height="20"/>
+  <use xlink:href="#a" transform="rotate(-98.106 198.016 -82.078) scale(25.6)" width="30" height="20"/>
+  <use xlink:href="#a" transform="matrix(7.04 -24.6272 24.6272 7.04 307.2 179.2)" width="30" height="20"/>
+  <use xlink:href="#a" transform="matrix(16 -19.968 19.968 16 256 230.4)" width="30" height="20"/>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/co.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-co">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#ffe800" d="M0 0h512.005v512H0z"/>
+    <path fill="#00148e" d="M0 256h512.005v256H0z"/>
+    <path fill="#da0010" d="M0 384.003h512.005V512H0z"/>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/cr.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cr">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#0000b4" d="M0 0h511.993v511.984H0z"/>
+    <path fill="#fff" d="M0 80.455h511.993v343.762H0z"/>
+    <path fill="#d90000" d="M0 168.222h511.993v168.222H0z"/>
+  </g>
+</svg>

+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/cu.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cu">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)">
+    <path fill="#0050f0" d="M-32 0h768v512H-32z"/>
+    <path fill="#fff" d="M-32 102.4h768v102.4H-32zm0 204.8h768v102.4H-32z"/>
+    <path d="M-32 0l440.69 255.67L-32 511.01V0z" fill="#ed0000"/>
+    <path d="M161.75 325.47l-47.447-35.432-47.214 35.78 17.56-58.144-47.13-35.904 58.306-.5 18.084-57.97 18.472 57.836 58.305.077-46.886 36.243 17.948 58.016z" fill="#fff"/>
+  </g>
+</svg>

+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/cv.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cv">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)">
+    <path fill="#fff" d="M-123.43 233.05H723.1v205.97h-846.53z"/>
+    <path fill="#081873" d="M-122.76 0h845.95v256.64h-845.95zm.24 385.87H729.6V512h-852.12z"/>
+    <path fill="#de3929" d="M-122.52 302.55h845.95v39.65h-845.95z"/>
+    <path fill="#ffce08" d="M130.92 399.168l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522m192.64-169.138l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522M88.27 335.448l6.65 20.468h21.523l-17.412 12.65 6.652 20.47-17.41-12.65-17.412 12.65 6.65-20.47-17.41-12.65h21.52m235.289-26.458l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522m-40.44-161.748l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522m-64.43-45.218l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522m-64.44 2.892l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65H121m-34.816 43.242l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522M198.74 420.408l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522m82.17-41.708l6.65 20.468h21.522l-17.412 12.65 6.65 20.47-17.41-12.65-17.41 12.65 6.65-20.47-17.412-12.65h21.522"/>
+  </g>
+</svg>

+ 14 - 0
usbkvm-app/www/tocas/flags/1x1/cw.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-cw">
+  <defs>
+    <path id="b" d="M0-1l.225.69H.95L.364.12l.225.69L0 .383-.588.81l.225-.692L-.95-.31h.725z"/>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h9000v9000H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" transform="scale(.057)">
+    <path fill="#002b7f" d="M0 0h13500v9000H0z"/>
+    <path fill="#f9e814" d="M0 5625h13500v1125H0z"/>
+    <use xlink:href="#b" transform="scale(750)" height="9000" width="13500" y="2" x="2" fill="#fff"/>
+    <use xlink:href="#b" transform="scale(1000)" height="9000" width="13500" y="3" x="3" fill="#fff"/>
+  </g>
+</svg>

+ 15 - 0
usbkvm-app/www/tocas/flags/1x1/cx.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-cx">
+  <path fill="#0021ad" d="M0 0h512v512H0z"/>
+  <path d="M0 0h512v512z" fill="#1c8a42"/>
+  <circle cx="256" cy="256" r="61.658" fill="#ffc639"/>
+  <path d="M218.344 228.304c4.218 5.787 10.61 15.49 15.75 12.957 4.012.014 6.083.296 6.627 2.966 9.462 1.61 25.364-2.38 35.26-15.268 0 0 .83.11.542-4.79.055-2.132 2.918-1.706 2.986-1.01.4 1.06.33 1.85.867 1.878 1.218-.406 2.883-3.138 4.28-4.872.38-.764.172-1.57.262-2.532.736-1.81 2.573-1.418 2.958-.468.35.612.358 1.08.702 1.693 1.865 1.245 5.23.082 5.49.082.33-1.522 1.31-1.377 1.31-1.377 1.244-.275.755-.165 1.574.26-.72 8.197 1.61 8.56 1.42 12.765.08 4.693-1.42 6.028-1.42 7.817.476 2.188 7.398 2.264 4.962 4.114-2.14 1.142.007 3.282-3.213 4.114-9.373 4.755-11.17 8.835-11.17 8.835s-2.352 4.444-2.613 4.444c-1.57 2.966-3.558 1.35-4.666 2.794-.55 1.817-1.168 5.842-.067 7.934.55 2.876-.07 4.445-.757 7.32-.62 6-3 6.91-3.276 9.015-1.1 2.25.234 12.82-.812 12.82-6.976.137-12.323-1.336-15.082-1.886 2.69-11.594 1.644-21.777 1.644-22.823-.688-8.292-12.42-6.275-14.216-7.376-1.486-.316-2.422-1.527-2.945-2.05-1.66-.18-2.278-.557-3.937-.73-.825.414-.33.84-2.174 1.412-4.68.564-6.744-4.08-6.744-4.08.227-1.563-10.52.316-16.363-1.04-2.395 1.335-3.44 5.285-5.402 5.753-.054 1.224-3.226-1.005-3.866-2.21-.13-3.502 3.055-5.05 3.055-5.05 2.532-1.782 4.032-2.07 5.25-3.303.612-3.048.302-5.305 1.603-7.596 1.1-1.748 2.725-.93 3.826-1.714 1.182-.784 1.684-5.917.59-7.32 0 0-4.734-4.274-4.995-4.535-1.54-4.417 1.803-7.266 2.76-6.943z" fill="#1c8a42"/>
+  <path d="M452.254 63.723c-2.793-11.055-27.798-34.865-46.59-50.016-4.486-3.056-7.41-1.236-6.825 3.122 2.338 3.9 4.093 8.19 6.432 12.093.654 2.6 1.886 4.422 2.54 7.022 0 0 .192 4.487.584 4.877 5.85 6.44 6.633 11.9 6.633 11.9 3.378 6.503 6.37 11.25 12.29 16.582 6.632 4.163 1.753 17.1 1.946 23.994 0 4.355-3.117 3.84-5.85 3.316-21.522-19.768-42.852-19.83-61.644-25.555-7.35-.78-7.48 2.73-5.07 4.678 13.135 14.05 25.485 23.608 41.744 31.603l8.196 5.08c3.117 2.6 6.24 5.2 9.358 7.802 7.218 4.68 7.81 8.972 7.81 9.358.192 8.78-4.494 15.606-5.856 18.337-2.463 9.31-7.41 10.927-7.41 10.927-40.192 27.118-61.26 34.136-126.417 25.748-.977-.516-7.217.523 0 3.124 16.583 5.525 57.318 14.388 96.727-4.273 9.46-6.633 15.792-4.46 22.645-8.43 11.256-6.942 27.33-15.584 30.254-16.554 8.78-4.687 33.36-9.95 39.02-14.637 6.497-.523 13.24-1.376 13.694-6.963 2.133-1.383 5.257-.372 7.576-4.927 5.154-.894 4.287-2.738 4.287-2.738-1.3-3.64-6.116-5.14-9.557-7.803-5.078-1.693-8.587-2.216-12.296-.392-1.17.523-2.34 1.04-3.51 1.562 0 0-5.462-.785-5.462-1.17-12.138-.668-10.955-40.893-15.248-57.67z" fill="#ffc639"/>
+  <path d="M542.467 217.777a3.005 1.878 15.947 1 1-5.73-1.8 3.005 1.878 15.947 0 1 5.73 1.8z" fill="#1c8a42"/>
+  <g transform="translate(-11.826 182.362) scale(.68267)" fill="#fff">
+    <path id="a" d="M188.16 190.94l-12.75-11.936-12.905 11.77 1.383-17.405-17.25-2.754 14.476-9.774-8.606-15.197 16.668 5.22 6.518-16.205 6.31 16.287 16.734-5.007-8.8 15.086 14.348 9.96-17.283 2.53 1.158 17.424z"/>
+    <path d="M233.39 335.53l-13.752-9.167-13.39 9.664 4.71-15.568-13.58-9.416 16.666-.446 4.988-15.496 5.595 15.3 16.667-.156-13.21 9.902 5.307 15.382z"/>
+    <use height="100%" width="100%" xlink:href="#a" x="2.522" y="269.061"/>
+    <use height="100%" width="100%" xlink:href="#a" x="-112.066" y="123.223"/>
+    <use height="100%" width="100%" xlink:href="#a" x="108.427" y="85.027"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 2 - 0
usbkvm-app/www/tocas/flags/1x1/cy.svg


+ 12 - 0
usbkvm-app/www/tocas/flags/1x1/cz.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-cz">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M102.42 0h708.66v708.66H102.42z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-74) scale(.722)" stroke-width="1pt">
+    <path fill="#e80000" d="M0 0h1063v708.66H0z"/>
+    <path fill="#fff" d="M0 0h1063v354.33H0z"/>
+    <path d="M0 0l529.732 353.88L0 707.3V0z" fill="#00006f"/>
+  </g>
+</svg>

+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/de.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-de">
+  <path fill="#ffce00" d="M0 341.338h512.005v170.67H0z"/>
+  <path d="M0 0h512.005v170.67H0z"/>
+  <path fill="#d00" d="M0 170.67h512.005v170.668H0z"/>
+</svg>

+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/dj.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-dj">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M55.364 0h708.66v708.66H55.364z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" fill-rule="evenodd" transform="translate(-40) scale(.722)">
+    <path fill="#0c0" d="M0 0h1063v708.66H0z"/>
+    <path fill="#69f" d="M0 0h1063v354.33H0z"/>
+    <path d="M0 0l529.732 353.88L0 707.3V0z" fill="#fffefe"/>
+    <path d="M221.193 404.247l-42.66-30.71-42.45 31.012 15.79-50.395-42.374-31.118 52.422-.434 16.26-50.24 16.607 50.125 52.422.066-42.156 31.41 16.137 50.283z" fill="red"/>
+  </g>
+</svg>

+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/dk.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-dk">
+  <path fill="#c60c30" d="M0 0h512.1v512H0z"/>
+  <path fill="#fff" d="M144 0h73.143v512H144z"/>
+  <path fill="#fff" d="M0 219.43h512.1v73.142H0z"/>
+</svg>

+ 152 - 0
usbkvm-app/www/tocas/flags/1x1/dm.svg

@@ -0,0 +1,152 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-dm">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)">
+    <path fill="#108c00" d="M-258.27 0h1027.5v512h-1027.5z"/>
+    <path fill="#ffd600" d="M-260 178.16H772.6v50.162H-260z"/>
+    <path fill="#ffd600" d="M181.08 0h48.432v512H181.08z"/>
+    <path d="M227.78 0h48.432v512H227.78z"/>
+    <path d="M-260 226.59H772.6v50.162H-260z"/>
+    <path fill="#fff" d="M-260 276.76H772.6v50.162H-260z"/>
+    <path fill="#fff" d="M276.22 0h48.432v512H276.22z"/>
+    <rect transform="scale(-1)" ry="137.51" width="273.75" y="-393.87" x="-394.56" height="275.03" fill="#e72910"/>
+    <g stroke-width="1pt">
+      <path d="M250.51 136.92c0-.258 5.61-15.997 5.61-15.997l5.098 15.74s17.08.515 17.08.257-13.51 10.32-13.51 10.32 6.373 18.062 6.118 17.546c-.255-.516-14.787-10.837-14.787-10.837s-14.787 10.32-14.532 10.32 5.608-17.03 5.608-17.03l-13.256-10.063 16.57-.258z"/>
+      <path d="M251.274 137.72c0-.224 4.857-13.855 4.857-13.855l4.417 13.63s14.794.448 14.794.225-11.7 8.938-11.7 8.938 5.52 15.643 5.298 15.196c-.22-.447-12.807-9.386-12.807-9.386s-12.805 8.94-12.584 8.94 4.857-14.75 4.857-14.75l-11.48-8.716 14.35-.223z" fill="#ffe700"/>
+      <path d="M253.328 139.987c0-.13 2.8-7.99 2.8-7.99l2.547 7.86s8.53.26 8.53.13-6.747 5.154-6.747 5.154 3.182 9.02 3.055 8.762c-.127-.257-7.384-5.41-7.384-5.41s-7.385 5.153-7.257 5.153 2.8-8.504 2.8-8.504l-6.62-5.025 8.275-.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M356.875 211.8c0-.258 5.608-15.997 5.608-15.997l5.1 15.74s17.08.515 17.08.257-13.512 10.32-13.512 10.32 6.375 18.062 6.12 17.546c-.255-.516-14.787-10.837-14.787-10.837s-14.786 10.32-14.53 10.32 5.607-17.03 5.607-17.03l-13.256-10.063 16.57-.258z"/>
+      <path d="M357.638 212.6c0-.224 4.857-13.855 4.857-13.855l4.416 13.63s14.795.448 14.795.225-11.702 8.938-11.702 8.938 5.52 15.643 5.3 15.196c-.222-.447-12.808-9.386-12.808-9.386s-12.806 8.94-12.585 8.94 4.857-14.75 4.857-14.75l-11.48-8.716 14.35-.223z" fill="#ffe700"/>
+      <path d="M359.692 214.867c0-.13 2.8-7.99 2.8-7.99l2.547 7.86s8.53.26 8.53.13-6.748 5.154-6.748 5.154 3.182 9.02 3.055 8.762c-.127-.257-7.384-5.41-7.384-5.41s-7.384 5.153-7.256 5.153 2.8-8.504 2.8-8.504l-6.62-5.025 8.275-.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M325.875 330.65c0-.258 5.608-15.997 5.608-15.997l5.1 15.74s17.08.515 17.08.257-13.512 10.32-13.512 10.32 6.375 18.062 6.12 17.546c-.255-.516-14.787-10.837-14.787-10.837S316.697 358 316.953 358s5.607-17.03 5.607-17.03l-13.256-10.063 16.57-.258z"/>
+      <path d="M326.638 331.45c0-.224 4.857-13.855 4.857-13.855l4.416 13.63s14.795.448 14.795.225-11.702 8.938-11.702 8.938 5.52 15.643 5.3 15.196c-.222-.447-12.808-9.386-12.808-9.386s-12.806 8.94-12.585 8.94 4.857-14.75 4.857-14.75l-11.48-8.716 14.35-.223z" fill="#ffe700"/>
+      <path d="M328.692 333.717c0-.13 2.8-7.99 2.8-7.99l2.547 7.86s8.53.26 8.53.13-6.748 5.154-6.748 5.154 3.182 9.02 3.055 8.762c-.127-.257-7.384-5.41-7.384-5.41s-7.384 5.153-7.256 5.153 2.8-8.504 2.8-8.504l-6.62-5.025 8.275-.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M177.167 330.65c0-.258 5.608-15.997 5.608-15.997l5.1 15.74s17.08.515 17.08.257-13.512 10.32-13.512 10.32 6.374 18.062 6.12 17.546c-.256-.516-14.788-10.837-14.788-10.837S167.99 358 168.245 358s5.607-17.03 5.607-17.03l-13.256-10.063 16.57-.258z"/>
+      <path d="M177.93 331.45c0-.224 4.857-13.855 4.857-13.855l4.416 13.63s14.794.448 14.794.225-11.702 8.938-11.702 8.938 5.52 15.643 5.3 15.196c-.222-.447-12.808-9.386-12.808-9.386s-12.806 8.94-12.585 8.94 4.857-14.75 4.857-14.75l-11.482-8.716 14.352-.223z" fill="#ffe700"/>
+      <path d="M179.984 333.717c0-.13 2.8-7.99 2.8-7.99l2.547 7.86s8.53.26 8.53.13-6.746 5.154-6.746 5.154 3.182 9.02 3.055 8.762c-.128-.257-7.385-5.41-7.385-5.41s-7.384 5.153-7.256 5.153 2.8-8.504 2.8-8.504l-6.62-5.025 8.274-.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M150.01 208.74c0-.258 5.608-15.997 5.608-15.997l5.1 15.74s17.08.515 17.08.257-13.512 10.32-13.512 10.32 6.374 18.062 6.12 17.546c-.256-.516-14.788-10.837-14.788-10.837s-14.786 10.32-14.53 10.32 5.607-17.03 5.607-17.03l-13.256-10.063 16.57-.258z"/>
+      <path d="M150.773 209.54c0-.224 4.857-13.855 4.857-13.855l4.416 13.63s14.794.448 14.794.225-11.702 8.938-11.702 8.938 5.52 15.643 5.3 15.196c-.222-.447-12.808-9.386-12.808-9.386s-12.806 8.94-12.585 8.94 4.857-14.75 4.857-14.75l-11.48-8.716 14.35-.223z" fill="#ffe700"/>
+      <path d="M152.827 211.807c0-.13 2.8-7.99 2.8-7.99l2.547 7.86s8.53.26 8.53.13-6.747 5.154-6.747 5.154 3.182 9.02 3.055 8.762c-.127-.257-7.384-5.41-7.384-5.41s-7.384 5.153-7.256 5.153 2.8-8.504 2.8-8.504l-6.62-5.025 8.275-.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M324.615 174.14c0 .258-5.608 15.997-5.608 15.997l-5.1-15.74s-17.08-.515-17.08-.257 13.512-10.32 13.512-10.32-6.375-18.062-6.12-17.546c.255.516 14.787 10.837 14.787 10.837s14.786-10.32 14.53-10.32-5.607 17.03-5.607 17.03l13.256 10.063-16.57.258z"/>
+      <path d="M323.852 173.34c0 .224-4.857 13.855-4.857 13.855l-4.416-13.63s-14.795-.448-14.795-.225 11.702-8.938 11.702-8.938-5.52-15.643-5.3-15.196c.222.447 12.808 9.386 12.808 9.386s12.806-8.94 12.585-8.94-4.857 14.75-4.857 14.75l11.48 8.716-14.35.223z" fill="#ffe700"/>
+      <path d="M321.798 171.073c0 .13-2.8 7.99-2.8 7.99l-2.547-7.86s-8.53-.26-8.53-.13 6.748-5.154 6.748-5.154-3.182-9.02-3.055-8.762c.127.257 7.384 5.41 7.384 5.41s7.384-5.153 7.256-5.153-2.8 8.504-2.8 8.504l6.62 5.025-8.275.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M367.315 290.28c0 .258-5.608 15.997-5.608 15.997l-5.1-15.74s-17.08-.515-17.08-.257 13.512-10.32 13.512-10.32-6.375-18.062-6.12-17.546c.255.516 14.787 10.837 14.787 10.837s14.786-10.32 14.53-10.32-5.607 17.03-5.607 17.03l13.256 10.063-16.57.258z"/>
+      <path d="M366.552 289.48c0 .224-4.857 13.855-4.857 13.855l-4.416-13.63s-14.795-.448-14.795-.225 11.702-8.938 11.702-8.938-5.52-15.643-5.3-15.196c.222.447 12.808 9.386 12.808 9.386s12.806-8.94 12.585-8.94-4.857 14.75-4.857 14.75l11.48 8.716-14.35.223z" fill="#ffe700"/>
+      <path d="M364.498 287.213c0 .13-2.8 7.99-2.8 7.99l-2.547-7.86s-8.53-.26-8.53-.13 6.748-5.154 6.748-5.154-3.182-9.02-3.055-8.762c.127.257 7.384 5.41 7.384 5.41s7.384-5.153 7.256-5.153-2.8 8.504-2.8 8.504l6.62 5.025-8.275.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M261.425 375.25c0 .258-5.608 15.997-5.608 15.997l-5.1-15.74s-17.08-.515-17.08-.257 13.512-10.32 13.512-10.32-6.375-18.062-6.12-17.546c.255.516 14.787 10.837 14.787 10.837s14.786-10.32 14.53-10.32-5.607 17.03-5.607 17.03l13.256 10.063-16.57.258z"/>
+      <path d="M260.662 374.45c0 .224-4.857 13.855-4.857 13.855l-4.416-13.63s-14.795-.448-14.795-.225 11.702-8.938 11.702-8.938-5.52-15.643-5.3-15.196c.222.447 12.808 9.386 12.808 9.386s12.806-8.94 12.585-8.94-4.857 14.75-4.857 14.75l11.48 8.716-14.35.223z" fill="#ffe700"/>
+      <path d="M258.608 372.183c0 .13-2.8 7.99-2.8 7.99l-2.547-7.86s-8.53-.26-8.53-.13 6.748-5.154 6.748-5.154-3.182-9.02-3.055-8.762c.127.257 7.384 5.41 7.384 5.41s7.384-5.153 7.256-5.153-2.8 8.504-2.8 8.504l6.62 5.025-8.275.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M161.935 290.28c0 .258-5.608 15.997-5.608 15.997l-5.1-15.74s-17.08-.515-17.08-.257 13.512-10.32 13.512-10.32-6.375-18.062-6.12-17.546c.255.516 14.787 10.837 14.787 10.837s14.786-10.32 14.53-10.32-5.607 17.03-5.607 17.03l13.256 10.063-16.57.258z"/>
+      <path d="M161.172 289.48c0 .224-4.857 13.855-4.857 13.855l-4.416-13.63s-14.795-.448-14.795-.225 11.702-8.938 11.702-8.938-5.52-15.643-5.3-15.196c.222.447 12.808 9.386 12.808 9.386s12.806-8.94 12.585-8.94-4.857 14.75-4.857 14.75l11.48 8.716-14.35.223z" fill="#ffe700"/>
+      <path d="M159.118 287.213c0 .13-2.8 7.99-2.8 7.99l-2.547-7.86s-8.53-.26-8.53-.13 6.748-5.154 6.748-5.154-3.182-9.02-3.055-8.762c.127.257 7.384 5.41 7.384 5.41s7.384-5.153 7.256-5.153-2.8 8.504-2.8 8.504l6.62 5.025-8.275.13z" fill="#108c00"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="M198.655 175.85c0 .258-5.608 15.997-5.608 15.997l-5.1-15.74s-17.08-.515-17.08-.257 13.512-10.32 13.512-10.32-6.375-18.062-6.12-17.546c.255.516 14.787 10.837 14.787 10.837s14.786-10.32 14.53-10.32-5.607 17.03-5.607 17.03l13.256 10.063-16.57.258z"/>
+      <path d="M197.892 175.05c0 .224-4.857 13.855-4.857 13.855l-4.416-13.63s-14.795-.448-14.795-.225 11.702-8.938 11.702-8.938-5.52-15.643-5.3-15.196c.222.447 12.808 9.386 12.808 9.386s12.806-8.94 12.585-8.94-4.857 14.75-4.857 14.75l11.48 8.716-14.35.223z" fill="#ffe700"/>
+      <path d="M195.838 172.783c0 .13-2.8 7.99-2.8 7.99l-2.547-7.86s-8.53-.26-8.53-.13 6.748-5.154 6.748-5.154-3.182-9.02-3.055-8.762c.127.257 7.384 5.41 7.384 5.41s7.384-5.153 7.256-5.153-2.8 8.504-2.8 8.504l6.62 5.025-8.275.13z" fill="#108c00"/>
+    </g>
+    <g transform="translate(-250.6 359.43) scale(1.036)">
+      <g transform="matrix(.164 -.016 .012 .184 429.84 -215.63)" stroke="#000" stroke-width="2.5" fill="#009200">
+        <ellipse rx="30.805" ry="189.82" transform="matrix(1.405 -.006 .008 1 -534.29 263.72)" cy="586.13" cx="680.21"/>
+        <ellipse rx="30.805" ry="189.82" transform="matrix(1.486 -.006 .01 1 -547.22 267.05)" cy="586.13" cx="680.21"/>
+        <ellipse rx="30.805" ry="189.82" transform="matrix(1.19 -.006 .007 1.105 -364.93 214.1)" cy="586.13" cx="680.21"/>
+      </g>
+      <g stroke="#000" transform="translate(72.865 -9.797)">
+        <path d="M238.34 971.79c29.972-1.665 16.65-16.652 31.637-24.977 14.986-8.326 36.633-3.33 43.293 6.66 6.66 9.99 1.666 19.982 9.99 19.982 8.327 0 234.56-12.675 242.88-4.35 8.327 8.326 9.992 24.978 1.666 31.635-8.325 6.66-294.5 14.34-304.49 7.68-9.99-6.66-24.977-34.965-24.977-36.63z" transform="matrix(.202 .003 -.004 .214 340.86 -247.31)" stroke-width="2.505" fill="#a95600"/>
+        <path d="M529.59 405.46c0 39.983 45.562 27.88 46.81 61.25-.724 35.407-76.706 3.466-78.635-61.25 1.93-64.716 75.107-97.93 76.705-61.01 1.246 30.685-44.88 21.027-44.88 61.01z" transform="matrix(.148 .002 -.003 .115 340.42 -81.69)" stroke-width="3.853" fill="#ff0"/>
+        <path d="M529.59 405.46c0 39.983 45.562 27.88 46.81 61.25-.724 35.407-76.706 3.466-78.635-61.25 1.93-64.716 75.107-97.93 76.705-61.01 1.246 30.685-44.88 21.027-44.88 61.01z" transform="matrix(.148 .002 -.003 .115 344.42 -81.638)" stroke-width="3.853" fill="#ff0"/>
+        <path d="M529.59 405.46c0 39.983 45.562 27.88 46.81 61.25-.724 35.407-76.706 3.466-78.635-61.25 1.93-64.716 75.107-97.93 76.705-61.01 1.246 30.685-44.88 21.027-44.88 61.01z" transform="matrix(.148 .002 -.003 .115 348.71 -81.8)" stroke-width="3.853" fill="#ff0"/>
+        <path d="M529.59 405.46c0 39.983 45.562 27.88 46.81 61.25-.724 35.407-76.706 3.466-78.635-61.25 1.93-64.716 75.107-97.93 76.705-61.01 1.246 30.685-44.88 21.027-44.88 61.01z" transform="matrix(.148 .002 -.003 .115 352.71 -81.747)" stroke-width="3.853" fill="#ff0"/>
+        <ellipse rx="3.534" ry="3.403" transform="matrix(1.095 .016 -.024 1.154 -75.57 4.678)" cy="-41.086" cx="478.38" stroke-width=".399" fill="#a95600"/>
+      </g>
+      <g transform="rotate(-5.8 688.37 -625.218)" stroke="#000" stroke-width="2.5" fill="#009200">
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.166 -.008 .002 .315 369.8 -361.65)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.166 -.008 .002 .315 364.04 -362.7)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.166 -.008 .002 .315 360.64 -370.55)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.01 .002 .348 369.3 -399.35)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 377.41 -379.07)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 373.22 -382.21)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 367.99 -386.66)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 363.01 -389.54)" cy="905" cx="427.11"/>
+      </g>
+      <path d="M173.17 346.35s-54.198 64.893-21.252 208.82c33.958 144.59 178.96 189.78 178.96 189.78s26.496-47.423 1.726-164.04c-39.96-169.85-116.14-234.56-116.14-234.56H173.17z" transform="matrix(.177 .032 -.03 .182 461.79 -208.61)" stroke="#000" stroke-width="2.5" fill="#804bff"/>
+      <g transform="rotate(4.47 180.984 769.886)" stroke="#000" stroke-width="2.5" fill="#009200">
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.166 -.008 .002 .315 369.8 -361.65)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.166 -.008 .002 .315 364.04 -362.7)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.166 -.008 .002 .315 360.64 -370.55)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.01 .002 .348 369.3 -399.35)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 377.41 -379.07)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 373.22 -382.21)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 367.99 -386.66)" cy="905" cx="427.11"/>
+        <ellipse rx="20.814" ry="24.144" transform="matrix(.16 -.008 .002 .326 363.01 -389.54)" cy="905" cx="427.11"/>
+      </g>
+      <ellipse rx="58.28" ry="186.49" stroke="#000" transform="matrix(.157 -.06 .064 .148 369.61 -145.05)" cy="606.11" cx="624.42" stroke-width="1pt" fill="#c90000"/>
+      <g stroke="#000" fill="#009200" transform="rotate(1.025 242.403 -1957.802)">
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.395 0 0 .293 445.07 -230.53)" cy="356.75" cx="218.13" stroke-width="1.464"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .293 457.17 -235.92)" cy="356.75" cx="218.13" stroke-width="1.546"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .293 452 -235.92)" cy="356.75" cx="218.13" stroke-width="1.546"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.37 0 0 .275 449.48 -233.46)" cy="356.75" cx="218.13" stroke-width="1.56"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.37 0 0 .275 448.95 -237.93)" cy="356.75" cx="218.13" stroke-width="1.56"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .293 447.01 -238.85)" cy="356.75" cx="218.13" stroke-width="1.546"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .287 448.08 -241.58)" cy="356.75" cx="218.13" stroke-width="1.562"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.395 0 0 .293 432.77 -243.48)" cy="356.75" cx="218.13" stroke-width="1.464"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.37 0 0 .275 445.92 -243.48)" cy="356.75" cx="218.13" stroke-width="1.56"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .287 444.16 -246.97)" cy="356.75" cx="218.13" stroke-width="1.562"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .293 436.14 -243.17)" cy="356.75" cx="218.13" stroke-width="1.546"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .287 437.42 -243.88)" cy="356.75" cx="218.13" stroke-width="1.562"/>
+        <ellipse rx="10.823" ry="12.905" transform="matrix(.354 0 0 .287 438.99 -247.02)" cy="356.75" cx="218.13" stroke-width="1.562"/>
+      </g>
+      <g stroke="#000" fill="#009200" transform="matrix(.18 -.005 .004 .185 420.99 -216.8)">
+        <ellipse rx="67.438" ry="205.64" transform="matrix(.976 -.308 .363 .874 -245.81 324.4)" cy="564.48" cx="528.68" stroke-width="2.545"/>
+        <ellipse rx="13.321" ry="40.796" transform="rotate(-23.382 630.518 660.85)" cy="646.07" cx="528.68" stroke-width="2.5"/>
+        <path d="M139.87 643.99c0 57.677-18.755 86.17-34.55 110.32 7.516-32.47 12.904-52.637 12.904-110.31 0-57.677 29.58-85.337 40.38-101.99-4.187 16.652-18.734 44.312-18.734 101.99z" transform="matrix(1.883 -.456 .953 1.182 -352.26 -10.02)" stroke-width="1.533"/>
+        <path d="M139.87 643.99c0 57.677-18.755 86.17-34.55 110.32 7.516-32.47 12.904-52.637 12.904-110.31 0-57.677 29.58-85.337 40.38-101.99-4.187 16.652-18.734 44.312-18.734 101.99z" transform="matrix(1.883 -.456 .953 1.182 -348.42 44.058)" stroke-width="1.533"/>
+        <path d="M139.87 643.99c0 57.677-18.755 86.17-34.55 110.32 7.516-32.47 12.904-52.637 12.904-110.31 0-57.677 29.58-85.337 40.38-101.99-4.187 16.652-18.734 44.312-18.734 101.99z" transform="matrix(1.873 -.495 .978 1.162 -361.92 105.78)" stroke-width="1.533"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.81 -.4 .7 1.635 -915.63 -221.01)" cy="646.07" cx="528.68" stroke-width="1.389"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.626 -.23 .542 1.353 -739.49 -91.775)" cy="646.07" cx="528.68" stroke-width="1.64"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.63 -.197 .513 1.363 -750.62 -91.826)" cy="646.07" cx="528.68" stroke-width="1.64"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.314 -.2 .47 1.01 -531.06 47.568)" cy="646.07" cx="528.68" stroke-width="2.097"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.326 -.13 .403 1.033 -517.87 12.21)" cy="646.07" cx="528.68" stroke-width="2.097"/>
+        <path d="M145.7 569.47c0 34.006-6.712 61.61-14.985 61.61-8.272 0-14.986-27.604-14.986-61.61" transform="matrix(1.025 -.493 .464 1.177 12.767 -14.52)" stroke-width="2.086"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.326 -.13 .403 1.033 -519.53 -34.412)" cy="646.07" cx="528.68" stroke-width="2.097"/>
+        <ellipse rx="13.321" ry="40.796" transform="matrix(1.33 -.105 .38 1.04 -533.98 -40.12)" cy="646.07" cx="528.68" stroke-width="2.097"/>
+        <path d="M145.7 569.47c0 34.006-6.712 61.61-14.985 61.61-8.272 0-14.986-27.604-14.986-61.61" transform="matrix(.672 -.472 .46 .8 39.486 143.28)" stroke-width="2.88"/>
+        <path d="M145.7 569.47c0 34.006-6.712 61.61-14.985 61.61-8.272 0-14.986-27.604-14.986-61.61" transform="matrix(.672 -.472 .46 .8 51.142 125.79)" stroke-width="2.88"/>
+        <path d="M145.7 569.47c0 34.006-6.712 61.61-14.985 61.61-8.272 0-14.986-27.604-14.986-61.61" transform="matrix(.937 -.645 .64 1.092 -40.198 -10.744)" stroke-width="2.086"/>
+        <path d="M145.7 569.47c0 34.006-6.712 61.61-14.985 61.61-8.272 0-14.986-27.604-14.986-61.61" transform="matrix(.672 -.52 .46 .88 68.626 71.18)" stroke-width="2.742"/>
+      </g>
+      <g stroke="#000" stroke-width="2.5" fill="#804bff">
+        <path d="M276.27 345.41c-12.278 9.174.41 25.144 12.022 30.68 13.06 7.67 86.603 58.184 136.32 11.998-40.795.833-118.66-63.183-148.34-42.678z" transform="matrix(.156 .007 -.004 .225 457.948 -214.274)"/>
+        <path d="M276.27 345.41c-12.278 9.174.41 25.144 12.022 30.68 13.06 7.67 86.603 58.184 136.32 11.998-40.795.833-118.66-63.183-148.34-42.678z" transform="matrix(.156 .007 -.004 .225 456.55 -220.15)"/>
+        <path d="M276.27 345.41c-12.278 9.174.41 25.144 12.022 30.68 13.06 7.67 86.603 58.184 136.32 11.998-40.795.833-118.66-63.183-148.34-42.678z" transform="matrix(.156 .007 -.004 .225 454.775 -225.77)"/>
+        <path d="M276.27 345.41c-12.278 9.174.41 25.144 12.022 30.68 13.06 7.67 86.603 58.184 136.32 11.998-40.795.833-118.66-63.183-148.34-42.678z" transform="matrix(.156 .007 -.004 .225 450.905 -232.203)"/>
+      </g>
+      <g transform="rotate(1.025 -589.593 681.628)">
+        <path d="M211.17 247.3c21.773-12.065 56.618-9.75 79.734 11.165 19.36 16.943 45.307 75.194 70.322 92.834-20.227.018-31.298-5.77-42.24-15.18-28.768 15.44-38.128 16.723-63.89 15.63-35.882-1.333-62.46-17.653-68.18-40.603-6.165-21.804 4.926-52.498 24.254-63.847z" transform="matrix(.21 -.04 .047 .18 407.8 -213.64)" stroke="#000" stroke-width="2.5" fill="#804bff"/>
+        <ellipse rx="14.154" ry="14.986" stroke="#000" transform="matrix(.245 0 0 .134 401.82 -215.18)" cy="323.04" cx="287.23" stroke-width="2.5" fill="red"/>
+        <ellipse rx="23.254" ry="15.895" stroke="#000" transform="matrix(.194 -.076 .068 .173 398.66 -208.06)" cy="348.26" cx="204.58" stroke-width="2.5" fill="#ff0"/>
+        <ellipse rx="5.828" ry="5.828" transform="matrix(.214 0 0 .185 411.29 -233.74)" cy="333.86" cx="283.9"/>
+        <path d="M516.8 260.29c4.425 18.107-6.674 43.083-33.133 52.61-26.775 13.172-46.08 41.83-55.64 88.016-47.245-103.27-23.108-148.28 20.6-160.35 37.376-14.363 60.42-13.37 68.173 19.72z" transform="matrix(.092 0 -.003 .085 417.85 -191.49)" stroke="#000" stroke-width="6.56" fill="#ff0"/>
+        <ellipse rx="4.71" ry="4.71" transform="matrix(.187 -.013 .014 .19 418.69 -234.98)" cy="362.39" cx="198.98"/>
+      </g>
+    </g>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 6739 - 0
usbkvm-app/www/tocas/flags/1x1/do.svg


+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/dz.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-dz">
+  <path fill="#fff" d="M256 0h256v512H256z"/>
+  <path fill="#006233" d="M0 0h256v512H0z"/>
+  <path d="M366.933 192a128 128 0 1 0 0 128 102.4 102.4 0 1 1 0-128m4.267 64L256 218.453l71.68 98.134V195.413L256 293.547z" fill="#d21034"/>
+</svg>

File diff suppressed because it is too large
+ 137 - 0
usbkvm-app/www/tocas/flags/1x1/ec.svg


+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/ee.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ee">
+  <g fill-rule="evenodd" transform="scale(.482 .72)" stroke-width="1pt">
+    <rect rx="0" ry="0" height="708.66" width="1063"/>
+    <rect rx="0" ry="0" height="236.22" width="1063" y="475.56" fill="#fff"/>
+    <path fill="#1291ff" d="M0 0h1063v236.22H0z"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 23 - 0
usbkvm-app/www/tocas/flags/1x1/eg.svg


+ 15 - 0
usbkvm-app/www/tocas/flags/1x1/eh.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-eh">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)">
+    <path d="M-180 0H844v256H-180z"/>
+    <path fill="#107b00" d="M-180 256H844v256H-180z"/>
+    <path fill="#fff" d="M-180 169.31H844v176.13H-180z"/>
+    <path d="M309.98 195.55c-45.202-19.423-84.107 20.644-84.063 58.085.046 39.158 38.02 80.92 86.168 62.43-34.087-10.037-48.156-35.215-48.15-60.68-.245-25.216 15.887-54.54 46.045-59.835z" fill="#f0f"/>
+    <path fill="#ff1800" d="M363.145 294.214l-25.835-18.868-25.993 18.898 9.963-30.403-26-18.87 31.984.07 9.93-30.552 9.816 30.435 32.115.005-25.924 18.735"/>
+    <path d="M314.34 315.65c-50.517 17.536-88.554-20.48-89.216-59.456-.66-38.976 37.59-79.167 89.473-60.865-29.355 4.352-50.912 30.08-51.17 59.168-.196 21.994 12.812 53.345 50.913 61.152zM-179.98 0l348.61 256.62L-180 512l.002-509.38.015-2.622z" fill="red"/>
+  </g>
+</svg>

File diff suppressed because it is too large
+ 10 - 0
usbkvm-app/www/tocas/flags/1x1/er.svg


+ 4 - 0
usbkvm-app/www/tocas/flags/1x1/es-ct.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-es-ct">
+  <path fill="#fcdd09" d="M0 0h512v512H0z"/>
+  <path d="M0 90h810m0 120H0m0 120h810m0 120H0" stroke="#da121a" stroke-width="60" transform="scale(.6321 .94815)"/>
+</svg>

File diff suppressed because it is too large
+ 338 - 0
usbkvm-app/www/tocas/flags/1x1/es.svg


+ 14 - 0
usbkvm-app/www/tocas/flags/1x1/et.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-et">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M229.34 6.346H718.6v489.26H229.34z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-240 -6.64) scale(1.046)" stroke-width="1pt">
+    <path fill="#ffc621" d="M1.923 9.69h991.84v475.89H1.923z"/>
+    <path fill="#ef2118" d="M0 333.64h993.18v161.97H0z"/>
+    <path fill="#298c08" d="M1.923 6.346h991.93v172H1.923z"/>
+    <ellipse cx="534.22" rx="199.65" cy="352.97" transform="matrix(.515 0 0 .515 204.68 77.013)" ry="199.65" fill="#006bc6"/>
+    <path d="M434.08 186.19l-6.148 4.322 22.45 31.555 5.99-3.82-22.293-32.056zm28.103 74.482l-9.232-6.437 3.816-12.113-45.985.642-13.31-10.19 62.775-.677 11.642-35.27 6.253 14.26-15.957 49.785zm73.126-67.54l-5.978-4.553-23.295 30.935 5.45 4.554 23.822-30.938zm-62.507 49.296l3.347-10.745 12.7-.023-14.508-43.642 5.693-15.768 19.613 59.636 37.138.44-11.704 10.27-52.278-.167zm86.646 48.894l2.497-7.086-36.594-12.673-2.66 6.585 36.756 13.174zm-66.11-44.355l11.255-.113 3.922 12.08 37.08-27.206 16.754.577-50.733 36.974 10.983 35.48-13.368-7.987-15.89-49.806zm-18.87 97.55l7.51.11.348-38.726-7.09-.422-.77 39.038zm20.968-76.795l3.695 10.63-10.2 7.568 37.606 26.475 4.793 16.063-51.218-36.302-30.128 21.72 3.31-15.217 42.14-30.938zm-98.682 12.41l2.22 7.177 36.93-11.663-1.792-6.872-37.358 11.356zm79.514-3.842l-8.964 6.805-10.353-7.354-13.528 43.955-13.79 9.532 18.658-59.94-29.982-21.922 15.494-1.566 42.466 30.49z" fill="#ffc621"/>
+  </g>
+</svg>

+ 28 - 0
usbkvm-app/www/tocas/flags/1x1/eu.svg

@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" id="flag-icon-css-eu">
+  <defs>
+    <g id="d">
+      <g id="b">
+        <path d="M0-1l-.31.95.477.156z" id="a"/>
+        <use transform="scale(-1 1)" xlink:href="#a"/>
+      </g>
+      <g id="c">
+        <use transform="rotate(72)" xlink:href="#b"/>
+        <use transform="rotate(144)" xlink:href="#b"/>
+      </g>
+      <use transform="scale(-1 1)" xlink:href="#c"/>
+    </g>
+  </defs>
+  <path fill="#039" d="M0 0h512v512H0z"/>
+  <g transform="translate(256 258.414) scale(25.28395)" fill="#fc0">
+    <use height="100%" width="100%" xlink:href="#d" y="-6"/>
+    <use height="100%" width="100%" xlink:href="#d" y="6"/>
+    <g id="e">
+      <use height="100%" width="100%" xlink:href="#d" x="-6"/>
+      <use height="100%" width="100%" xlink:href="#d" transform="rotate(-144 -2.344 -2.11)"/>
+      <use height="100%" width="100%" xlink:href="#d" transform="rotate(144 -2.11 -2.344)"/>
+      <use height="100%" width="100%" xlink:href="#d" transform="rotate(72 -4.663 -2.076)"/>
+      <use height="100%" width="100%" xlink:href="#d" transform="rotate(72 -5.076 .534)"/>
+    </g>
+    <use height="100%" width="100%" xlink:href="#e" transform="scale(-1 1)"/>
+  </g>
+</svg>

+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/fi.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-fi">
+  <path fill="#fff" d="M0 0h512v512H0z"/>
+  <path fill="#003580" d="M0 186.182h512v139.636H0z"/>
+  <path fill="#003580" d="M123.152 0h139.636v512H123.152z"/>
+</svg>

File diff suppressed because it is too large
+ 13 - 0
usbkvm-app/www/tocas/flags/1x1/fj.svg


File diff suppressed because it is too large
+ 31 - 0
usbkvm-app/www/tocas/flags/1x1/fk.svg


+ 11 - 0
usbkvm-app/www/tocas/flags/1x1/fm.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-fm">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M244.16 0h496.06v496.06H244.16z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-252) scale(1.032)" stroke-width="1pt">
+    <path fill="#6797d6" d="M0 0h992.13v496.06H0z"/>
+    <path fill="#fff" d="M507.845 84.45l38.874-.027-31.47 21.477 12.04 34.786-31.43-21.528-31.433 21.523 12.047-34.78-31.464-21.487 38.874.036 11.98-34.804m11.982 362.97l38.874.026-31.47-21.477 12.04-34.786-31.43 21.527-31.433-21.523 12.047 34.78-31.464 21.488 38.874-.036 11.98 34.803M346.08 230.102l37.168-11.39-23.816 29.738 21.685 29.747-36.352-11.398L321 296.57l1.35-36.783-36.37-11.35 37.185-11.33 1.283-36.784m321.102 29.779l-37.17-11.39 23.817 29.738-21.686 29.747 36.353-11.398 23.766 29.77-1.352-36.783 36.37-11.35-37.184-11.33-1.283-36.784"/>
+  </g>
+</svg>

+ 12 - 0
usbkvm-app/www/tocas/flags/1x1/fo.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-fo">
+  <defs>
+    <clipPath id="a">
+      <path fill-opacity=".67" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#a)" fill-rule="evenodd" stroke-width="0">
+    <path fill="#fff" d="M-78.015 0h708.18v512h-708.18z"/>
+    <path d="M-75.9 199.11h198.29V0H235.7v199.11h396.58v113.78H235.7V512H122.39V312.89H-75.9V199.11z" fill="#003897"/>
+    <path d="M-75.9 227.56h226.62V0h56.653v227.56h424.91v56.89h-424.91v227.56H150.72V284.45H-75.9v-56.89z" fill="#d72828"/>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/fr.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-fr">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#fff" d="M0 0h512.005v512H0z"/>
+    <path fill="#00267f" d="M0 0h170.667v512H0z"/>
+    <path fill="#f31830" d="M341.333 0H512v512H341.333z"/>
+  </g>
+</svg>

+ 7 - 0
usbkvm-app/www/tocas/flags/1x1/ga.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-ga">
+  <g fill-rule="evenodd">
+    <path fill="#ffe700" d="M512.004 511.993H0V0h512.004z"/>
+    <path fill="#36a100" d="M512.004 170.664H0V0h512.004z"/>
+    <path fill="#006dbc" d="M512.004 511.993H0V341.33h512.004z"/>
+  </g>
+</svg>

+ 5 - 0
usbkvm-app/www/tocas/flags/1x1/gb-eng.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-gb-eng">
+  <path fill="#fff" d="M0 0h512v512H0z"/>
+  <path fill="#ce1124" d="M215.04 0h81.92v512h-81.92z"/>
+  <path fill="#ce1124" d="M0 215.04h512v81.92H0z"/>
+</svg>

File diff suppressed because it is too large
+ 128 - 0
usbkvm-app/www/tocas/flags/1x1/gb-nir.svg


+ 4 - 0
usbkvm-app/www/tocas/flags/1x1/gb-sct.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" id="flag-icon-css-gb-sct">
+  <path fill="#0065bd" d="M0 0h512v512H0z"/>
+  <path d="M0 0l5 3M0 3l5-3" stroke="#fff" stroke-width=".6" transform="scale(102.4 170.66667)"/>
+</svg>

File diff suppressed because it is too large
+ 4 - 0
usbkvm-app/www/tocas/flags/1x1/gb-wls.svg


Some files were not shown because too many files changed in this diff