lexgui 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/lexgui.js CHANGED
@@ -12,7 +12,7 @@ console.warn( 'Script _build/lexgui.js_ is depracated and will be removed soon.
12
12
  */
13
13
 
14
14
  var LX = {
15
- version: "0.5.0",
15
+ version: "0.5.2",
16
16
  ready: false,
17
17
  components: [], // Specific pre-build components
18
18
  signals: {}, // Events and triggers
@@ -52,7 +52,7 @@ else if( typeof Date != "undefined" && Date.now )
52
52
  else if ( typeof process != "undefined" )
53
53
  {
54
54
  LX.getTime = function() {
55
- var t = process.hrtime();
55
+ const t = process.hrtime();
56
56
  return t[ 0 ] * 0.001 + t[ 1 ] * 1e-6;
57
57
  };
58
58
  }
@@ -154,7 +154,7 @@ LX.setTheme = setTheme;
154
154
  */
155
155
  function setThemeColor( colorName, color )
156
156
  {
157
- var r = document.querySelector( ':root' );
157
+ const r = document.querySelector( ':root' );
158
158
  r.style.setProperty( '--' + colorName, color );
159
159
  }
160
160
 
@@ -196,10 +196,10 @@ LX.getThemeColor = getThemeColor;
196
196
  */
197
197
  function getBase64Image( img )
198
198
  {
199
- var canvas = document.createElement( 'canvas' );
199
+ const canvas = document.createElement( 'canvas' );
200
200
  canvas.width = img.width;
201
201
  canvas.height = img.height;
202
- var ctx = canvas.getContext( '2d' );
202
+ const ctx = canvas.getContext( '2d' );
203
203
  ctx.drawImage( img, 0, 0 );
204
204
  return canvas.toDataURL( 'image/png' );
205
205
  }
@@ -964,8 +964,8 @@ function init( options = { } )
964
964
  this.root = root;
965
965
  this.container = document.body;
966
966
 
967
- this.modal.classList.add( 'hiddenOpacity' );
968
- this.modal.toggle = function( force ) { this.classList.toggle( 'hiddenOpacity', force ); };
967
+ this.modal.classList.add( 'hidden-opacity' );
968
+ this.modal.toggle = function( force ) { this.classList.toggle( 'hidden-opacity', force ); };
969
969
 
970
970
  if( options.container )
971
971
  {
@@ -1041,6 +1041,17 @@ function init( options = { } )
1041
1041
  this.DEFAULT_SPLITBAR_SIZE = 4;
1042
1042
  this.OPEN_CONTEXTMENU_ENTRY = 'click';
1043
1043
 
1044
+ this.widgetResizeObserver = new ResizeObserver( entries => {
1045
+ for ( const entry of entries )
1046
+ {
1047
+ const widget = entry.target?.jsInstance;
1048
+ if( widget && widget.onResize )
1049
+ {
1050
+ widget.onResize( entry.contentRect );
1051
+ }
1052
+ }
1053
+ });
1054
+
1044
1055
  this.ready = true;
1045
1056
  this.menubars = [ ];
1046
1057
 
@@ -1471,11 +1482,20 @@ LX.addSignal = addSignal;
1471
1482
 
1472
1483
  class DropdownMenu {
1473
1484
 
1485
+ static currentMenu = false;
1486
+
1474
1487
  constructor( trigger, items, options = {} ) {
1475
1488
 
1476
1489
  console.assert( trigger, "DropdownMenu needs a DOM element as trigger!" );
1477
- this._trigger = trigger;
1478
1490
 
1491
+ if( DropdownMenu.currentMenu )
1492
+ {
1493
+ DropdownMenu.currentMenu.destroy();
1494
+ return;
1495
+ }
1496
+
1497
+ this._trigger = trigger;
1498
+ trigger.classList.add( "triggered" );
1479
1499
  trigger.ddm = this;
1480
1500
 
1481
1501
  this._items = items;
@@ -1494,6 +1514,7 @@ class DropdownMenu {
1494
1514
 
1495
1515
  this._create( this._items );
1496
1516
 
1517
+ DropdownMenu.currentMenu = this;
1497
1518
 
1498
1519
  doAsync( () => {
1499
1520
  this._adjustPosition();
@@ -1501,7 +1522,7 @@ class DropdownMenu {
1501
1522
  this.root.focus();
1502
1523
 
1503
1524
  this._onClick = e => {
1504
- if( e.target && ( e.target.className.includes( "lexdropdown" ) || e.target == this._trigger ) )
1525
+ if( e.target && ( this.root.contains( e.target ) || e.target == this._trigger ) )
1505
1526
  {
1506
1527
  return;
1507
1528
  }
@@ -1514,11 +1535,15 @@ class DropdownMenu {
1514
1535
 
1515
1536
  destroy() {
1516
1537
 
1538
+ this._trigger.classList.remove( "triggered" );
1539
+
1517
1540
  delete this._trigger.ddm;
1518
1541
 
1519
1542
  document.body.removeEventListener( "click", this._onClick );
1520
1543
 
1521
1544
  LX.root.querySelectorAll( ".lexdropdownmenu" ).forEach( m => { m.remove(); } );
1545
+
1546
+ DropdownMenu.currentMenu = null;
1522
1547
  }
1523
1548
 
1524
1549
  _create( items, parentDom ) {
@@ -1577,12 +1602,6 @@ class DropdownMenu {
1577
1602
  menuItem.id = pKey;
1578
1603
  menuItem.innerHTML = `<span>${ key }</span>`;
1579
1604
 
1580
- if( item.icon )
1581
- {
1582
- const icon = LX.makeIcon( item.icon );
1583
- menuItem.prepend( icon );
1584
- }
1585
-
1586
1605
  menuItem.tabIndex = "1";
1587
1606
  parentDom.appendChild( menuItem );
1588
1607
 
@@ -1598,15 +1617,41 @@ class DropdownMenu {
1598
1617
  menuItem.appendChild( submenuIcon );
1599
1618
  }
1600
1619
 
1601
- menuItem.addEventListener( "click", () => {
1602
- const f = item[ 'callback' ];
1603
- if( f )
1604
- {
1605
- f.call( this, key, menuItem );
1606
- }
1620
+ if( item.icon )
1621
+ {
1622
+ const icon = LX.makeIcon( item.icon );
1623
+ menuItem.prepend( icon );
1624
+ }
1607
1625
 
1608
- this.destroy();
1609
- } );
1626
+ if( item.checked != undefined )
1627
+ {
1628
+ const checkbox = new Checkbox( pKey + "_entryChecked", item.checked, (v) => {
1629
+ const f = item[ 'callback' ];
1630
+ if( f )
1631
+ {
1632
+ f.call( this, key, menuItem, v );
1633
+ }
1634
+ });
1635
+ const input = checkbox.root.querySelector( "input" );
1636
+ menuItem.prepend( input );
1637
+
1638
+ menuItem.addEventListener( "click", (e) => {
1639
+ if( e.target.type == "checkbox" ) return;
1640
+ input.checked = !input.checked;
1641
+ checkbox.set( input.checked );
1642
+ } );
1643
+ }
1644
+ else
1645
+ {
1646
+ menuItem.addEventListener( "click", () => {
1647
+ const f = item[ 'callback' ];
1648
+ if( f )
1649
+ {
1650
+ f.call( this, key, menuItem );
1651
+ }
1652
+ this.destroy();
1653
+ } );
1654
+ }
1610
1655
 
1611
1656
  menuItem.addEventListener("mouseover", e => {
1612
1657
 
@@ -1776,7 +1821,7 @@ class Area {
1776
1821
 
1777
1822
  if( !options.skipAppend )
1778
1823
  {
1779
- var lexroot = document.getElementById("lexroot");
1824
+ let lexroot = document.getElementById("lexroot");
1780
1825
  lexroot.appendChild( this.root );
1781
1826
  }
1782
1827
 
@@ -1847,12 +1892,12 @@ class Area {
1847
1892
  this.splitBar.addEventListener("mousedown", innerMouseDown);
1848
1893
  this.root.appendChild( this.splitBar );
1849
1894
 
1850
- var that = this;
1851
- var lastMousePosition = [ 0, 0 ];
1895
+ const that = this;
1896
+ let lastMousePosition = [ 0, 0 ];
1852
1897
 
1853
1898
  function innerMouseDown( e )
1854
1899
  {
1855
- var doc = that.root.ownerDocument;
1900
+ const doc = that.root.ownerDocument;
1856
1901
  doc.addEventListener( 'mousemove', innerMouseMove );
1857
1902
  doc.addEventListener( 'mouseup', innerMouseUp );
1858
1903
  lastMousePosition[ 0 ] = e.x;
@@ -1905,7 +1950,7 @@ class Area {
1905
1950
 
1906
1951
  function innerMouseUp( e )
1907
1952
  {
1908
- var doc = that.root.ownerDocument;
1953
+ const doc = that.root.ownerDocument;
1909
1954
  doc.removeEventListener( 'mousemove', innerMouseMove );
1910
1955
  doc.removeEventListener( 'mouseup', innerMouseUp );
1911
1956
  document.body.classList.remove( 'nocursor' );
@@ -1957,9 +2002,9 @@ class Area {
1957
2002
  this.root = this.sections[ 1 ].root;
1958
2003
  }
1959
2004
 
1960
- var type = options.type || "horizontal";
1961
- var sizes = options.sizes || [ "50%", "50%" ];
1962
- var auto = (options.sizes === 'auto');
2005
+ const type = options.type || "horizontal";
2006
+ const sizes = options.sizes || [ "50%", "50%" ];
2007
+ const auto = (options.sizes === 'auto');
1963
2008
 
1964
2009
  if( !sizes[ 1 ] )
1965
2010
  {
@@ -1975,8 +2020,8 @@ class Area {
1975
2020
  }
1976
2021
 
1977
2022
  // Create areas
1978
- var area1 = new Area( { skipAppend: true, className: "split" + ( options.menubar || options.sidebar ? "" : " origin" ) } );
1979
- var area2 = new Area( { skipAppend: true, className: "split" } );
2023
+ let area1 = new Area( { skipAppend: true, className: "split" + ( options.menubar || options.sidebar ? "" : " origin" ) } );
2024
+ let area2 = new Area( { skipAppend: true, className: "split" } );
1980
2025
 
1981
2026
  area1.parentArea = this;
1982
2027
  area2.parentArea = this;
@@ -1984,7 +2029,7 @@ class Area {
1984
2029
  let minimizable = options.minimizable ?? false;
1985
2030
  let resize = ( options.resize ?? true ) || minimizable;
1986
2031
 
1987
- var data = "0px";
2032
+ let data = "0px";
1988
2033
  this.offset = 0;
1989
2034
 
1990
2035
  if( resize )
@@ -2031,7 +2076,7 @@ class Area {
2031
2076
 
2032
2077
  if( type == "horizontal" )
2033
2078
  {
2034
- var width1 = sizes[ 0 ],
2079
+ let width1 = sizes[ 0 ],
2035
2080
  width2 = sizes[ 1 ];
2036
2081
 
2037
2082
  if( width1.constructor == Number )
@@ -2072,7 +2117,7 @@ class Area {
2072
2117
  }
2073
2118
  else
2074
2119
  {
2075
- var height1 = sizes[ 0 ],
2120
+ let height1 = sizes[ 0 ],
2076
2121
  height2 = sizes[ 1 ];
2077
2122
 
2078
2123
  if( height1.constructor == Number )
@@ -2110,11 +2155,11 @@ class Area {
2110
2155
  return this.sections;
2111
2156
  }
2112
2157
 
2113
- var that = this;
2158
+ const that = this;
2114
2159
 
2115
2160
  function innerMouseDown( e )
2116
2161
  {
2117
- var doc = that.root.ownerDocument;
2162
+ const doc = that.root.ownerDocument;
2118
2163
  doc.addEventListener( 'mousemove', innerMouseMove );
2119
2164
  doc.addEventListener( 'mouseup', innerMouseUp );
2120
2165
  e.stopPropagation();
@@ -2134,26 +2179,13 @@ class Area {
2134
2179
  that._moveSplit( -e.movementY );
2135
2180
  }
2136
2181
 
2137
- const widgets = that.root.querySelectorAll( ".lexwidget" );
2138
-
2139
- // Send area resize to every widget in the area
2140
- for( let widget of widgets )
2141
- {
2142
- const jsInstance = widget.jsInstance;
2143
-
2144
- if( jsInstance.onresize )
2145
- {
2146
- jsInstance.onresize();
2147
- }
2148
- }
2149
-
2150
2182
  e.stopPropagation();
2151
2183
  e.preventDefault();
2152
2184
  }
2153
2185
 
2154
2186
  function innerMouseUp( e )
2155
2187
  {
2156
- var doc = that.root.ownerDocument;
2188
+ const doc = that.root.ownerDocument;
2157
2189
  doc.removeEventListener( 'mousemove', innerMouseMove );
2158
2190
  doc.removeEventListener( 'mouseup', innerMouseUp );
2159
2191
  document.body.classList.remove( 'nocursor' );
@@ -2301,7 +2333,7 @@ class Area {
2301
2333
 
2302
2334
  propagateEvent( eventName ) {
2303
2335
 
2304
- for( var i = 0; i < this.sections.length; i++ )
2336
+ for( let i = 0; i < this.sections.length; i++ )
2305
2337
  {
2306
2338
  const area = this.sections[ i ];
2307
2339
 
@@ -2427,7 +2459,7 @@ class Area {
2427
2459
 
2428
2460
  if( float )
2429
2461
  {
2430
- for( var i = 0; i < float.length; i++ )
2462
+ for( let i = 0; i < float.length; i++ )
2431
2463
  {
2432
2464
  const t = float[i];
2433
2465
  switch( t )
@@ -2646,7 +2678,7 @@ class Area {
2646
2678
 
2647
2679
  for( var i = 0; i < this.sections.length; i++ )
2648
2680
  {
2649
- this.sections[i]._update();
2681
+ this.sections[ i ]._update();
2650
2682
  }
2651
2683
  }
2652
2684
  };
@@ -2696,38 +2728,56 @@ class Tabs {
2696
2728
  e.preventDefault(); // Prevent default action (open as link for some elements)
2697
2729
 
2698
2730
  const tabId = e.dataTransfer.getData( "source" );
2699
- const el = document.getElementById( tabId );
2700
- if( !el ) return;
2731
+ const tabDom = document.getElementById( tabId );
2732
+ if( !tabDom ) return;
2701
2733
 
2734
+ const sourceContainer = tabDom.parentElement;
2702
2735
  const target = e.target;
2703
2736
  const rect = target.getBoundingClientRect();
2704
2737
 
2705
2738
  if( e.offsetX < ( rect.width * 0.5 ) )
2706
2739
  {
2707
- this.insertBefore( el, target );
2740
+ this.insertBefore( tabDom, target );
2708
2741
  }
2709
2742
  else if( target.nextElementSibling )
2710
2743
  {
2711
- this.insertBefore( el, target.nextElementSibling );
2744
+ this.insertBefore( tabDom, target.nextElementSibling );
2712
2745
  }
2713
2746
  else
2714
2747
  {
2715
- this.appendChild( el );
2748
+ this.appendChild( tabDom );
2716
2749
  }
2717
2750
 
2751
+ {
2752
+ // Update childIndex for fit mode tabs in source container
2753
+ sourceContainer.childNodes.forEach( (c, idx) => c.childIndex = ( idx - 1 ) );
2754
+
2755
+ // If needed, set last tab of source container active
2756
+ const sourceAsFit = (/true/).test( e.dataTransfer.getData( "fit" ) );
2757
+ if( sourceContainer.childElementCount == ( sourceAsFit ? 2 : 1 ) )
2758
+ {
2759
+ sourceContainer.lastChild.click(); // single tab or thumb first (fit mode)
2760
+ }
2761
+ else
2762
+ {
2763
+ const sourceSelected = sourceContainer.querySelector( ".selected" );
2764
+ ( sourceSelected ?? sourceContainer.childNodes[ sourceAsFit ? 1 : 0 ] ).click();
2765
+ }
2766
+ }
2767
+
2768
+ // Update childIndex for fit mode tabs in target container
2769
+ this.childNodes.forEach( (c, idx) => c.childIndex = ( idx - 1 ) );
2770
+
2718
2771
  const content = document.getElementById( tabId + "_content" );
2719
2772
  that.area.attach( content );
2720
2773
  this.classList.remove("dockingtab");
2721
2774
 
2722
- // Change tabs instance
2723
- LX.emit( "@on_tab_docked" );
2724
- el.instance = that;
2725
-
2726
- // Show on drop
2727
- el.click();
2775
+ // Change tabs instance and select on drop
2776
+ tabDom.instance = that;
2777
+ tabDom.click();
2728
2778
 
2729
2779
  // Store info
2730
- that.tabs[ el.dataset["name"] ] = content;
2780
+ that.tabs[ tabDom.dataset["name"] ] = content;
2731
2781
  });
2732
2782
 
2733
2783
  area.root.classList.add( "lexareatabscontainer" );
@@ -2773,7 +2823,7 @@ class Tabs {
2773
2823
 
2774
2824
  if( folding == "up" )
2775
2825
  {
2776
- area.root.insertChildAtIndex(area.sections[1].root, 0);
2826
+ area.root.insertChildAtIndex( area.sections[ 1 ].root, 0 );
2777
2827
  }
2778
2828
 
2779
2829
  // Listen resize event on parent area
@@ -2840,18 +2890,13 @@ class Tabs {
2840
2890
  this.selected = name;
2841
2891
  }
2842
2892
 
2843
- LX.addSignal( "@on_tab_docked", tabEl, function() {
2844
- if( this.parentElement.childNodes.length == 1 )
2845
- {
2846
- this.parentElement.childNodes[ 0 ].click(); // single tab!!
2847
- }
2848
- } );
2849
-
2850
2893
  tabEl.addEventListener("click", e => {
2851
2894
 
2852
2895
  e.preventDefault();
2853
2896
  e.stopPropagation();
2854
2897
 
2898
+ const scope = tabEl.instance;
2899
+
2855
2900
  if( !tabEl.fixed )
2856
2901
  {
2857
2902
  // For folding tabs
@@ -2862,15 +2907,15 @@ class Tabs {
2862
2907
  tabEl.parentElement.querySelectorAll( 'span' ).forEach( s => s.classList.remove( 'selected' ));
2863
2908
  tabEl.classList.toggle('selected', ( this.folding && tabEl.selected ));
2864
2909
  // Manage visibility
2865
- tabEl.instance.area.root.querySelectorAll( '.lextabcontent' ).forEach( c => c.style.display = 'none' );
2910
+ scope.area.root.querySelectorAll( '.lextabcontent' ).forEach( c => c.style.display = 'none' );
2866
2911
  contentEl.style.display = contentEl.originalDisplay;
2867
- tabEl.instance.selected = tabEl.dataset.name;
2912
+ scope.selected = tabEl.dataset.name;
2868
2913
  }
2869
2914
 
2870
- if( this.folding )
2915
+ if( scope.folding )
2871
2916
  {
2872
- this.folded = tabEl.selected;
2873
- this.area.root.classList.toggle( 'folded', !this.folded );
2917
+ scope.folded = tabEl.selected;
2918
+ scope.area.root.classList.toggle( 'folded', !scope.folded );
2874
2919
  }
2875
2920
 
2876
2921
  if( options.onSelect )
@@ -2878,12 +2923,12 @@ class Tabs {
2878
2923
  options.onSelect(e, tabEl.dataset.name);
2879
2924
  }
2880
2925
 
2881
- if( this.thumb )
2926
+ if( scope.thumb )
2882
2927
  {
2883
- this.thumb.style.transform = "translate( " + ( tabEl.childIndex * tabEl.offsetWidth ) + "px )";
2884
- this.thumb.style.width = ( tabEl.offsetWidth - 5 ) + "px";
2885
- this.thumb.style.height = ( tabEl.offsetHeight - 6 ) + "px";
2886
- this.thumb.item = tabEl;
2928
+ scope.thumb.style.transform = "translate( " + ( tabEl.childIndex * tabEl.offsetWidth ) + "px )";
2929
+ scope.thumb.style.width = ( tabEl.offsetWidth - 5 ) + "px";
2930
+ scope.thumb.style.height = ( tabEl.offsetHeight - 6 ) + "px";
2931
+ scope.thumb.item = tabEl;
2887
2932
  }
2888
2933
  });
2889
2934
 
@@ -2907,12 +2952,14 @@ class Tabs {
2907
2952
  });
2908
2953
 
2909
2954
  tabEl.setAttribute( 'draggable', true );
2910
- tabEl.addEventListener( 'dragstart', function( e ) {
2911
- if( this.parentElement.childNodes.length == 1 ){
2955
+ tabEl.addEventListener( 'dragstart', e => {
2956
+ const sourceAsFit = !!this.thumb;
2957
+ if( tabEl.parentElement.childNodes.length == ( sourceAsFit ? 2 : 1 ) ){
2912
2958
  e.preventDefault();
2913
2959
  return;
2914
2960
  }
2915
2961
  e.dataTransfer.setData( 'source', e.target.id );
2962
+ e.dataTransfer.setData( 'fit', sourceAsFit );
2916
2963
  });
2917
2964
 
2918
2965
  // Attach content
@@ -4355,6 +4402,8 @@ class Widget {
4355
4402
  {
4356
4403
  root.style.height = root.style.minHeight = options.height;
4357
4404
  }
4405
+
4406
+ LX.widgetResizeObserver.observe( root );
4358
4407
  }
4359
4408
 
4360
4409
  if( name != undefined )
@@ -4415,10 +4464,11 @@ class Widget {
4415
4464
 
4416
4465
  _addResetProperty( container, callback ) {
4417
4466
 
4418
- var domEl = document.createElement('a');
4467
+ const domEl = LX.makeIcon( "rotate-left", "Reset" )
4419
4468
  domEl.style.display = "none";
4420
4469
  domEl.style.marginRight = "6px";
4421
- domEl.className = "lexicon fa fa-rotate-left";
4470
+ domEl.style.marginLeft = "0";
4471
+ domEl.style.paddingInline = "6px";
4422
4472
  domEl.addEventListener( "click", callback );
4423
4473
  container.appendChild( domEl );
4424
4474
  return domEl;
@@ -4554,15 +4604,17 @@ LX.Widget = Widget;
4554
4604
 
4555
4605
  function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4556
4606
  {
4557
- let custom_idx = simple_guidGenerator();
4607
+ let customIdx = simple_guidGenerator();
4558
4608
 
4559
4609
  Panel.prototype[ 'add' + customWidgetName ] = function( name, instance, callback ) {
4560
4610
 
4611
+ options.nameWidth = "100%";
4612
+
4561
4613
  let widget = new Widget( Widget.CUSTOM, name, null, options );
4562
4614
  this._attachWidget( widget );
4563
4615
 
4564
4616
  widget.customName = customWidgetName;
4565
- widget.customIdx = custom_idx;
4617
+ widget.customIdx = customIdx;
4566
4618
 
4567
4619
  widget.onGetValue = () => {
4568
4620
  return instance;
@@ -4579,7 +4631,6 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4579
4631
  };
4580
4632
 
4581
4633
  const element = widget.root;
4582
- element.style.flexWrap = "wrap";
4583
4634
 
4584
4635
  let container, customWidgetsDom;
4585
4636
  let default_instance = options.default ?? {};
@@ -4598,11 +4649,12 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4598
4649
 
4599
4650
  container = document.createElement('div');
4600
4651
  container.className = "lexcustomcontainer";
4601
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
4652
+ container.style.width = "100%";
4653
+ element.appendChild( container );
4602
4654
 
4603
4655
  let buttonName = "<a class='fa-solid " + (options.icon ?? "fa-cube") + "' style='float:left'></a>";
4604
4656
  buttonName += customWidgetName + (!instance ? " [empty]" : "");
4605
- // Add alwayis icon to keep spacing right
4657
+ // Add always icon to keep spacing right
4606
4658
  buttonName += "<a class='fa-solid " + (instance ? "fa-bars-staggered" : " ") + " menu' style='float:right; width:5%;'></a>";
4607
4659
 
4608
4660
  let buttonEl = this.addButton(null, buttonName, (value, event) => {
@@ -4622,7 +4674,6 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4622
4674
  }
4623
4675
 
4624
4676
  }, { buttonClass: 'custom' });
4625
-
4626
4677
  container.appendChild( buttonEl.root );
4627
4678
 
4628
4679
  if( instance )
@@ -4644,8 +4695,6 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4644
4695
  customWidgetsDom = document.createElement('div');
4645
4696
  customWidgetsDom.className = "lexcustomitems";
4646
4697
  customWidgetsDom.toggleAttribute('hidden', true);
4647
-
4648
- element.appendChild( container );
4649
4698
  element.appendChild( customWidgetsDom );
4650
4699
 
4651
4700
  if( instance )
@@ -4716,24 +4765,32 @@ class NodeTree {
4716
4765
  this.options = options;
4717
4766
  this.selected = [];
4718
4767
 
4719
- if(data.constructor === Object)
4720
- this._create_item( null, data );
4768
+ this._forceClose = false;
4769
+
4770
+ if( data.constructor === Object )
4771
+ {
4772
+ this._createItem( null, data );
4773
+ }
4721
4774
  else
4775
+ {
4722
4776
  for( let d of data )
4723
- this._create_item( null, d );
4777
+ {
4778
+ this._createItem( null, d );
4779
+ }
4780
+ }
4724
4781
  }
4725
4782
 
4726
- _create_item( parent, node, level = 0, selectedId ) {
4783
+ _createItem( parent, node, level = 0, selectedId ) {
4727
4784
 
4728
4785
  const that = this;
4729
4786
  const nodeFilterInput = this.domEl.querySelector( "#lexnodetree_filter" );
4730
4787
 
4731
4788
  node.children = node.children ?? [];
4732
- if( nodeFilterInput && !node.id.includes( nodeFilterInput.value ) || (selectedId != undefined) && selectedId != node.id )
4789
+ if( nodeFilterInput && nodeFilterInput.value != "" && !node.id.includes( nodeFilterInput.value ) )
4733
4790
  {
4734
4791
  for( var i = 0; i < node.children.length; ++i )
4735
4792
  {
4736
- this._create_item( node, node.children[ i ], level + 1, selectedId );
4793
+ this._createItem( node, node.children[ i ], level + 1, selectedId );
4737
4794
  }
4738
4795
  return;
4739
4796
  }
@@ -4756,11 +4813,15 @@ class NodeTree {
4756
4813
  item.className = "lextreeitem " + "datalevel" + level + (isParent ? " parent" : "") + (isSelected ? " selected" : "");
4757
4814
  item.id = LX.getSupportedDOMName( node.id );
4758
4815
  item.tabIndex = "0";
4816
+ item.treeData = node;
4759
4817
 
4760
4818
  // Select hierarchy icon
4761
4819
  let icon = (this.options.skip_default_icon ?? true) ? "" : "fa-solid fa-square"; // Default: no childs
4762
- if( isParent ) icon = node.closed ? "fa-solid fa-caret-right" : "fa-solid fa-caret-down";
4763
- item.innerHTML = "<a class='" + icon + " hierarchy'></a>";
4820
+ if( isParent )
4821
+ {
4822
+ icon = node.closed ? "fa-solid fa-caret-right" : "fa-solid fa-caret-down";
4823
+ item.innerHTML = "<a class='" + icon + " hierarchy'></a>";
4824
+ }
4764
4825
 
4765
4826
  // Add display icon
4766
4827
  icon = node.icon;
@@ -4780,7 +4841,7 @@ class NodeTree {
4780
4841
  item.innerHTML += (node.rename ? "" : node.id);
4781
4842
 
4782
4843
  item.setAttribute( 'draggable', true );
4783
- item.style.paddingLeft = ((isParent ? 0 : 3 ) + (3 + (level+1) * 15)) + "px";
4844
+ item.style.paddingLeft = ((3 + (level+1) * 15)) + "px";
4784
4845
  list.appendChild( item );
4785
4846
 
4786
4847
  // Callbacks
@@ -4864,7 +4925,7 @@ class NodeTree {
4864
4925
 
4865
4926
  that.onevent( event );
4866
4927
 
4867
- if( ( this.options.addDefault ?? false ) == true )
4928
+ if( this.options.addDefault ?? false )
4868
4929
  {
4869
4930
  if( event.panel.items )
4870
4931
  {
@@ -4888,18 +4949,20 @@ class NodeTree {
4888
4949
  }
4889
4950
 
4890
4951
  let nodeItem = this.domEl.querySelector( '#' + child.id );
4891
- nodeItem.classList.add('selected');
4952
+ nodeItem.classList.add( "selected" );
4892
4953
  this.selected.push( child );
4893
4954
  selectChildren( child );
4894
4955
  }
4895
4956
  };
4896
4957
 
4958
+ this.domEl.querySelectorAll( ".selected" ).forEach( i => i.classList.remove( "selected" ) );
4959
+ this.selected.length = 0;
4960
+
4897
4961
  // Add childs of the clicked node
4898
4962
  selectChildren( node );
4899
4963
  } );
4900
4964
 
4901
4965
  event.panel.add( "Delete", { callback: () => {
4902
-
4903
4966
  // It's the root node
4904
4967
  if( !node.parent )
4905
4968
  {
@@ -4991,7 +5054,7 @@ class NodeTree {
4991
5054
  node.id = LX.getSupportedDOMName( this.value );
4992
5055
  delete node.rename;
4993
5056
  that.frefresh( node.id );
4994
- list.querySelector("#" + node.id).classList.add('selected');
5057
+ list.querySelector( "#" + node.id ).classList.add('selected');
4995
5058
  }
4996
5059
  else if(e.key == "Escape")
4997
5060
  {
@@ -5081,7 +5144,22 @@ class NodeTree {
5081
5144
  e.stopImmediatePropagation();
5082
5145
  e.stopPropagation();
5083
5146
 
5084
- node.closed = !node.closed;
5147
+ if( e.altKey )
5148
+ {
5149
+ const _closeNode = function( node ) {
5150
+ node.closed = !node.closed;
5151
+ for( var c of node.children )
5152
+ {
5153
+ _closeNode( c );
5154
+ }
5155
+ };
5156
+ _closeNode( node );
5157
+ }
5158
+ else
5159
+ {
5160
+ node.closed = !node.closed;
5161
+ }
5162
+
5085
5163
  if( that.onevent )
5086
5164
  {
5087
5165
  const event = new TreeEvent(TreeEvent.NODE_CARETCHANGED, node, node.closed);
@@ -5133,13 +5211,18 @@ class NodeTree {
5133
5211
  inputContainer.appendChild( visibility );
5134
5212
  }
5135
5213
 
5136
- if( selectedId != undefined && node.id == selectedId )
5137
- {
5138
- this.selected = [ node ];
5139
- item.click();
5140
- }
5214
+ const _hasChild = function( parent, id ) {
5215
+ if( !parent.length ) return;
5216
+ for( var c of parent.children )
5217
+ {
5218
+ if( c.id == id ) return true;
5219
+ return _hasChild( c, id );
5220
+ }
5221
+ };
5222
+
5223
+ const exists = _hasChild( node, selectedId );
5141
5224
 
5142
- if( node.closed )
5225
+ if( node.closed && !exists )
5143
5226
  {
5144
5227
  return;
5145
5228
  }
@@ -5153,25 +5236,42 @@ class NodeTree {
5153
5236
  continue;
5154
5237
  }
5155
5238
 
5156
- this._create_item( node, child, level + 1 );
5239
+ this._createItem( node, child, level + 1, selectedId );
5157
5240
  }
5158
5241
  }
5159
5242
 
5160
5243
  refresh( newData, selectedId ) {
5244
+
5161
5245
  this.data = newData ?? this.data;
5162
5246
  this.domEl.querySelector( "ul" ).innerHTML = "";
5163
- this._create_item( null, this.data, 0, selectedId );
5247
+ this._createItem( null, this.data, 0, selectedId );
5164
5248
  }
5165
5249
 
5166
5250
  /* Refreshes the tree and focuses current element */
5167
5251
  frefresh( id ) {
5252
+
5168
5253
  this.refresh();
5169
5254
  var el = this.domEl.querySelector( "#" + id );
5170
- if( el ) el.focus();
5255
+ if( el )
5256
+ {
5257
+ el.focus();
5258
+ }
5171
5259
  }
5172
5260
 
5173
5261
  select( id ) {
5262
+
5174
5263
  this.refresh( null, id );
5264
+
5265
+ this.domEl.querySelectorAll( ".selected" ).forEach( i => i.classList.remove( "selected" ) );
5266
+ this.selected.length = 0;
5267
+
5268
+ var el = this.domEl.querySelector( "#" + id );
5269
+ if( el )
5270
+ {
5271
+ el.classList.add( "selected" );
5272
+ this.selected = [ el.treeData ];
5273
+ el.focus();
5274
+ }
5175
5275
  }
5176
5276
  }
5177
5277
 
@@ -5277,6 +5377,11 @@ class TextInput extends Widget {
5277
5377
  }
5278
5378
  };
5279
5379
 
5380
+ this.onResize = ( rect ) => {
5381
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5382
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
5383
+ };
5384
+
5280
5385
  this.valid = ( v ) => {
5281
5386
  v = v ?? this.value();
5282
5387
  if( !v.length || wValue.pattern == "" ) return true;
@@ -5286,8 +5391,8 @@ class TextInput extends Widget {
5286
5391
 
5287
5392
  let container = document.createElement( 'div' );
5288
5393
  container.className = "lextext" + ( options.warning ? " lexwarning" : "" );
5289
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " )";
5290
5394
  container.style.display = "flex";
5395
+ this.root.appendChild( container );
5291
5396
 
5292
5397
  if( options.textClass )
5293
5398
  {
@@ -5366,20 +5471,13 @@ class TextInput extends Widget {
5366
5471
  wValue.innerHTML = ( icon + value ) || "";
5367
5472
  wValue.style.width = "100%";
5368
5473
  wValue.style.textAlign = options.float ?? "";
5474
+ wValue.className = "ellipsis-overflow";
5369
5475
  }
5370
5476
 
5371
5477
  Object.assign( wValue.style, options.style ?? {} );
5372
-
5373
5478
  container.appendChild( wValue );
5374
- this.root.appendChild( container );
5375
5479
 
5376
- // Remove branch padding and margins
5377
- const useNameAsLabel = !( options.hideName ?? false );
5378
- if( !useNameAsLabel )
5379
- {
5380
- this.root.className += " noname";
5381
- container.style.width = "100%";
5382
- }
5480
+ doAsync( this.onResize.bind( this ) );
5383
5481
  }
5384
5482
  }
5385
5483
 
@@ -5410,17 +5508,22 @@ class TextArea extends Widget {
5410
5508
  }
5411
5509
  };
5412
5510
 
5511
+ this.onResize = ( rect ) => {
5512
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5513
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
5514
+ };
5515
+
5413
5516
  let container = document.createElement( "div" );
5414
5517
  container.className = "lextextarea";
5415
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " )";
5416
- container.style.height = options.height;
5417
5518
  container.style.display = "flex";
5519
+ this.root.appendChild( container );
5418
5520
 
5419
5521
  let wValue = document.createElement( "textarea" );
5420
5522
  wValue.value = wValue.iValue = value || "";
5421
5523
  wValue.style.width = "100%";
5422
5524
  wValue.style.textAlign = options.float ?? "";
5423
5525
  Object.assign( wValue.style, options.style ?? {} );
5526
+ container.appendChild( wValue );
5424
5527
 
5425
5528
  if( options.disabled ?? false ) wValue.setAttribute( "disabled", true );
5426
5529
  if( options.placeholder ) wValue.setAttribute( "placeholder", options.placeholder );
@@ -5454,24 +5557,16 @@ class TextArea extends Widget {
5454
5557
  container.appendChild( icon );
5455
5558
  }
5456
5559
 
5457
- container.appendChild( wValue );
5458
- this.root.appendChild( container );
5459
-
5460
- // Remove branch padding and margins
5461
- const useNameAsLabel = !( options.hideName ?? false );
5462
- if( !useNameAsLabel )
5463
- {
5464
- this.root.className += " noname";
5465
- container.style.width = "100%";
5466
- }
5467
-
5468
- // Do this after creating the DOM element
5469
5560
  doAsync( () => {
5561
+ container.style.height = options.height;
5562
+
5470
5563
  if( options.fitHeight )
5471
5564
  {
5472
5565
  // Update height depending on the content
5473
5566
  wValue.style.height = wValue.scrollHeight + "px";
5474
5567
  }
5568
+
5569
+ this.onResize();
5475
5570
  }, 10 );
5476
5571
  }
5477
5572
  }
@@ -5499,9 +5594,15 @@ class Button extends Widget {
5499
5594
  ( options.img ? "<img src='" + options.img + "'>" : "<span>" + ( newValue || "" ) + "</span>" ) );
5500
5595
  };
5501
5596
 
5597
+ this.onResize = ( rect ) => {
5598
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5599
+ wValue.style.width = `calc( 100% - ${ realNameWidth }px)`;
5600
+ };
5601
+
5502
5602
  var wValue = document.createElement( 'button' );
5503
5603
  wValue.title = options.title ?? "";
5504
5604
  wValue.className = "lexbutton " + ( options.buttonClass ?? "" );
5605
+ this.root.appendChild( wValue );
5505
5606
 
5506
5607
  if( options.selected )
5507
5608
  {
@@ -5512,8 +5613,6 @@ class Button extends Widget {
5512
5613
  ( options.icon ? "<a class='" + options.icon + "'></a>" :
5513
5614
  ( options.img ? "<img src='" + options.img + "'>" : "<span>" + ( value || "" ) + "</span>" ) );
5514
5615
 
5515
- wValue.style.width = "calc( 100% - " + ( options.nameWidth ?? LX.DEFAULT_NAME_WIDTH ) + ")";
5516
-
5517
5616
  if( options.disabled )
5518
5617
  {
5519
5618
  wValue.setAttribute( "disabled", true );
@@ -5533,15 +5632,7 @@ class Button extends Widget {
5533
5632
  this._trigger( new IEvent( name, value, e ), callback );
5534
5633
  });
5535
5634
 
5536
- this.root.appendChild( wValue );
5537
-
5538
- // Remove branch padding and
5539
- const useNameAsLabel = !( options.hideName ?? false ) && !( options.icon || options.img );
5540
- if( !useNameAsLabel )
5541
- {
5542
- wValue.className += " noname";
5543
- wValue.style.width = "100%";
5544
- }
5635
+ doAsync( this.onResize.bind( this ) );
5545
5636
  }
5546
5637
  }
5547
5638
 
@@ -5569,11 +5660,10 @@ class ComboButtons extends Widget {
5569
5660
  container.className += options.float;
5570
5661
  }
5571
5662
 
5572
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
5573
-
5574
5663
  let currentValue = [];
5575
5664
  let buttonsBox = document.createElement('div');
5576
5665
  buttonsBox.className = "lexcombobuttonsbox ";
5666
+ container.appendChild( buttonsBox );
5577
5667
 
5578
5668
  for( let b of values )
5579
5669
  {
@@ -5685,16 +5775,14 @@ class ComboButtons extends Widget {
5685
5775
  }
5686
5776
  };
5687
5777
 
5688
- // Remove branch padding and margins
5689
- const useNameAsLabel = !( options.hideName ?? false );
5690
- if( !useNameAsLabel )
5691
- {
5692
- this.root.className += " noname";
5693
- container.style.width = "100%";
5694
- }
5778
+ this.onResize = ( rect ) => {
5779
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5780
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
5781
+ };
5695
5782
 
5696
- container.appendChild( buttonsBox );
5697
5783
  this.root.appendChild( container );
5784
+
5785
+ doAsync( this.onResize.bind( this ) );
5698
5786
  }
5699
5787
  }
5700
5788
 
@@ -5716,6 +5804,7 @@ class Card extends Widget {
5716
5804
  let container = document.createElement('div');
5717
5805
  container.className = "lexcard";
5718
5806
  container.style.width = "100%";
5807
+ this.root.appendChild( container );
5719
5808
 
5720
5809
  if( options.img )
5721
5810
  {
@@ -5738,6 +5827,7 @@ class Card extends Widget {
5738
5827
 
5739
5828
  let cardNameDom = document.createElement('span');
5740
5829
  cardNameDom.innerText = name;
5830
+ container.appendChild( cardNameDom );
5741
5831
 
5742
5832
  if( options.link != undefined )
5743
5833
  {
@@ -5756,9 +5846,6 @@ class Card extends Widget {
5756
5846
  this._trigger( new IEvent( name, null, e ), options.callback );
5757
5847
  });
5758
5848
  }
5759
-
5760
- container.appendChild( cardNameDom );
5761
- this.root.appendChild( container );
5762
5849
  }
5763
5850
  }
5764
5851
 
@@ -5807,7 +5894,9 @@ class Form extends Widget {
5807
5894
 
5808
5895
  let container = document.createElement( 'div' );
5809
5896
  container.className = "lexformdata";
5897
+ container.style.width = "100%";
5810
5898
  container.formData = {};
5899
+ this.root.appendChild( container );
5811
5900
 
5812
5901
  for( let entry in data )
5813
5902
  {
@@ -5852,12 +5941,6 @@ class Form extends Widget {
5852
5941
  }, { buttonClass: "primary", width: "calc(100% - 10px)" } );
5853
5942
 
5854
5943
  container.appendChild( submitButton.root );
5855
-
5856
- this.root.appendChild( container );
5857
-
5858
- // Form does not never use label
5859
- this.root.className += " noname";
5860
- container.style.width = "100%";
5861
5944
  }
5862
5945
  }
5863
5946
 
@@ -5909,9 +5992,14 @@ class Select extends Widget {
5909
5992
  }
5910
5993
  };
5911
5994
 
5995
+ this.onResize = ( rect ) => {
5996
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5997
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
5998
+ };
5999
+
5912
6000
  let container = document.createElement( "div" );
5913
6001
  container.className = "lexselect";
5914
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6002
+ this.root.appendChild( container );
5915
6003
 
5916
6004
  let wValue = document.createElement( 'div' );
5917
6005
  wValue.className = "lexselect lexoption";
@@ -6070,7 +6158,7 @@ class Select extends Widget {
6070
6158
  filterOptions.skipWidget = filterOptions.skipWidget ?? true;
6071
6159
  filterOptions.trigger = "input";
6072
6160
  filterOptions.icon = "fa-solid fa-magnifying-glass";
6073
- filterOptions.className = "lexfilter noname";
6161
+ filterOptions.className = "lexfilter";
6074
6162
 
6075
6163
  let filter = new TextInput(null, options.filterValue ?? "", ( v ) => {
6076
6164
  const filteredOptions = this._filterOptions( values, v );
@@ -6187,15 +6275,8 @@ class Select extends Widget {
6187
6275
  list.refresh( values );
6188
6276
 
6189
6277
  container.appendChild( listDialog );
6190
- this.root.appendChild( container );
6191
6278
 
6192
- // Remove branch padding and margins
6193
- const useNameAsLabel = !( options.hideName ?? false );
6194
- if( !useNameAsLabel )
6195
- {
6196
- this.root.className += " noname";
6197
- container.style.width = "100%";
6198
- }
6279
+ doAsync( this.onResize.bind( this ) );
6199
6280
  }
6200
6281
 
6201
6282
  _filterOptions( options, value ) {
@@ -6251,9 +6332,17 @@ class Curve extends Widget {
6251
6332
  }
6252
6333
  };
6253
6334
 
6335
+ this.onResize = ( rect ) => {
6336
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6337
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
6338
+ flushCss( container );
6339
+ curveInstance.canvas.width = container.offsetWidth;
6340
+ curveInstance.redraw();
6341
+ };
6342
+
6254
6343
  var container = document.createElement( "div" );
6255
6344
  container.className = "lexcurve";
6256
- container.style.width = this.name ? "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")" : "100%";
6345
+ this.root.appendChild( container );
6257
6346
 
6258
6347
  options.callback = (v, e) => {
6259
6348
  this._trigger( new IEvent( name, v, e ), callback );
@@ -6263,16 +6352,9 @@ class Curve extends Widget {
6263
6352
 
6264
6353
  let curveInstance = new CanvasCurve( values, options );
6265
6354
  container.appendChild( curveInstance.element );
6266
- this.root.appendChild( container );
6267
-
6268
- // Resize
6269
- this.onresize = curveInstance.redraw.bind( curveInstance );
6270
6355
  this.curveInstance = curveInstance;
6271
6356
 
6272
- doAsync(() => {
6273
- curveInstance.canvas.width = container.offsetWidth;
6274
- curveInstance.redraw();
6275
- });
6357
+ doAsync( this.onResize.bind( this ) );
6276
6358
  }
6277
6359
  }
6278
6360
 
@@ -6292,21 +6374,32 @@ class Dial extends Widget {
6292
6374
  super( Widget.DIAL, name, defaultValues, options );
6293
6375
 
6294
6376
  this.onGetValue = () => {
6295
- return JSON.parse( JSON.stringify( curveInstance.element.value ) );
6377
+ return JSON.parse( JSON.stringify( dialInstance.element.value ) );
6296
6378
  };
6297
6379
 
6298
6380
  this.onSetValue = ( newValue, skipCallback, event ) => {
6299
- curveInstance.element.value = JSON.parse( JSON.stringify( newValue ) );
6300
- curveInstance.redraw();
6381
+ dialInstance.element.value = JSON.parse( JSON.stringify( newValue ) );
6382
+ dialInstance.redraw();
6301
6383
  if( !skipCallback )
6302
6384
  {
6303
- this._trigger( new IEvent( name, curveInstance.element.value, event ), callback );
6385
+ this._trigger( new IEvent( name, dialInstance.element.value, event ), callback );
6304
6386
  }
6305
6387
  };
6306
6388
 
6389
+ this.onResize = ( rect ) => {
6390
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6391
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
6392
+ flushCss( container );
6393
+ dialInstance.element.style.height = dialInstance.element.offsetWidth + "px";
6394
+ dialInstance.canvas.width = dialInstance.element.offsetWidth;
6395
+ container.style.width = dialInstance.element.offsetWidth + "px";
6396
+ dialInstance.canvas.height = dialInstance.canvas.width;
6397
+ dialInstance.redraw();
6398
+ };
6399
+
6307
6400
  var container = document.createElement( "div" );
6308
6401
  container.className = "lexcurve";
6309
- container.style.width = this.name ? "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")" : "100%";
6402
+ this.root.appendChild( container );
6310
6403
 
6311
6404
  options.callback = ( v, e ) => {
6312
6405
  this._trigger( new IEvent( name, v, e ), callback );
@@ -6314,21 +6407,11 @@ class Dial extends Widget {
6314
6407
 
6315
6408
  options.name = name;
6316
6409
 
6317
- let curveInstance = new CanvasDial( this, values, options );
6318
- container.appendChild( curveInstance.element );
6319
- this.root.appendChild( container );
6320
-
6321
- // Resize
6322
- this.onresize = curveInstance.redraw.bind( curveInstance );
6323
- this.curveInstance = curveInstance;
6410
+ let dialInstance = new CanvasDial( this, values, options );
6411
+ container.appendChild( dialInstance.element );
6412
+ this.dialInstance = dialInstance;
6324
6413
 
6325
- doAsync(() => {
6326
- curveInstance.element.style.height = curveInstance.element.offsetWidth + "px";
6327
- curveInstance.canvas.width = curveInstance.element.offsetWidth;
6328
- container.style.width = curveInstance.element.offsetWidth + "px";
6329
- curveInstance.canvas.height = curveInstance.canvas.width;
6330
- curveInstance.redraw();
6331
- });
6414
+ doAsync( this.onResize.bind( this ) );
6332
6415
  }
6333
6416
  }
6334
6417
 
@@ -6351,22 +6434,27 @@ class Layers extends Widget {
6351
6434
 
6352
6435
  this.onSetValue = ( newValue, skipCallback, event ) => {
6353
6436
  value = newValue;
6354
- setLayers();
6437
+ this.setLayers( value );
6355
6438
  if( !skipCallback )
6356
6439
  {
6357
6440
  this._trigger( new IEvent(name, value, event), callback );
6358
6441
  }
6359
6442
  };
6360
6443
 
6444
+ this.onResize = ( rect ) => {
6445
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6446
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
6447
+ };
6448
+
6361
6449
  var container = document.createElement( "div" );
6362
6450
  container.className = "lexlayers";
6363
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6451
+ this.root.appendChild( container );
6364
6452
 
6365
- const setLayers = () => {
6453
+ this.setLayers = ( val ) => {
6366
6454
 
6367
6455
  container.innerHTML = "";
6368
6456
 
6369
- let binary = value.toString( 2 );
6457
+ let binary = val.toString( 2 );
6370
6458
  let nbits = binary.length;
6371
6459
 
6372
6460
  // fill zeros
@@ -6380,7 +6468,7 @@ class Layers extends Widget {
6380
6468
  let layer = document.createElement( "div" );
6381
6469
  layer.className = "lexlayer";
6382
6470
 
6383
- if( value != undefined )
6471
+ if( val != undefined )
6384
6472
  {
6385
6473
  const valueBit = binary[ 16 - bit - 1 ];
6386
6474
  if( valueBit != undefined && valueBit == '1' )
@@ -6397,15 +6485,15 @@ class Layers extends Widget {
6397
6485
  e.stopPropagation();
6398
6486
  e.stopImmediatePropagation();
6399
6487
  e.target.classList.toggle( "selected" );
6400
- const newValue = value ^ ( 1 << bit );
6488
+ const newValue = val ^ ( 1 << bit );
6401
6489
  this.set( newValue, false, e );
6402
6490
  } );
6403
6491
  }
6404
6492
  };
6405
6493
 
6406
- setLayers();
6494
+ this.setLayers( value );
6407
6495
 
6408
- this.root.appendChild( container );
6496
+ doAsync( this.onResize.bind( this ) );
6409
6497
  }
6410
6498
  }
6411
6499
 
@@ -6420,6 +6508,8 @@ class ItemArray extends Widget {
6420
6508
 
6421
6509
  constructor( name, values = [], callback, options = {} ) {
6422
6510
 
6511
+ options.nameWidth = "100%";
6512
+
6423
6513
  super( Widget.ARRAY, name, null, options );
6424
6514
 
6425
6515
  this.onGetValue = () => {
@@ -6435,15 +6525,14 @@ class ItemArray extends Widget {
6435
6525
  }
6436
6526
  };
6437
6527
 
6438
- this.root.style.flexWrap = "wrap";
6439
-
6440
6528
  // Add open array button
6441
6529
 
6442
6530
  const itemNameWidth = "4%";
6443
6531
 
6444
6532
  var container = document.createElement('div');
6445
6533
  container.className = "lexarray";
6446
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6534
+ container.style.width = "100%";
6535
+ this.root.appendChild( container );
6447
6536
 
6448
6537
  const angleDown = `<a class='fa-solid fa-angle-down' style='float:right; margin-right: 3px;'></a>`;
6449
6538
 
@@ -6453,7 +6542,6 @@ class ItemArray extends Widget {
6453
6542
  const toggleButton = new Button(null, buttonName, () => {
6454
6543
  this.root.querySelector(".lexarrayitems").toggleAttribute('hidden');
6455
6544
  }, { buttonClass: 'array' });
6456
-
6457
6545
  container.appendChild( toggleButton.root );
6458
6546
 
6459
6547
  // Show elements
@@ -6461,8 +6549,6 @@ class ItemArray extends Widget {
6461
6549
  let arrayItems = document.createElement( "div" );
6462
6550
  arrayItems.className = "lexarrayitems";
6463
6551
  arrayItems.toggleAttribute( "hidden", true );
6464
-
6465
- this.root.appendChild( container );
6466
6552
  this.root.appendChild( arrayItems );
6467
6553
 
6468
6554
  this._updateItems = () => {
@@ -6479,10 +6565,6 @@ class ItemArray extends Widget {
6479
6565
  {
6480
6566
  const value = values[ i ];
6481
6567
  let baseclass = options.innerValues ? 'select' : value.constructor;
6482
-
6483
- // TODO
6484
- // this.sameLine( 2 );
6485
-
6486
6568
  let widget = null;
6487
6569
 
6488
6570
  switch( baseclass )
@@ -6511,13 +6593,13 @@ class ItemArray extends Widget {
6511
6593
 
6512
6594
  arrayItems.appendChild( widget.root );
6513
6595
 
6514
- widget = new Button( null, "<a class='lexicon fa-solid fa-trash'></a>", ( v, event) => {
6596
+ const removeWidget = new Button( null, "<a class='lexicon fa-solid fa-trash'></a>", ( v, event) => {
6515
6597
  values.splice( values.indexOf( value ), 1 );
6516
6598
  this._updateItems();
6517
6599
  this._trigger( new IEvent(name, values, event), callback );
6518
6600
  }, { title: "Remove item", className: 'micro'} );
6519
6601
 
6520
- arrayItems.appendChild( widget.root );
6602
+ widget.root.appendChild( removeWidget.root );
6521
6603
  }
6522
6604
 
6523
6605
  buttonName = "Add item";
@@ -6582,6 +6664,11 @@ class List extends Widget {
6582
6664
  }
6583
6665
  };
6584
6666
 
6667
+ this.onResize = ( rect ) => {
6668
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6669
+ listContainer.style.width = `calc( 100% - ${ realNameWidth }px)`;
6670
+ };
6671
+
6585
6672
  this._updateValues = ( newValues ) => {
6586
6673
 
6587
6674
  values = newValues;
@@ -6617,19 +6704,11 @@ class List extends Widget {
6617
6704
 
6618
6705
  let listContainer = document.createElement( 'div' );
6619
6706
  listContainer.className = "lexlist";
6620
- listContainer.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6707
+ this.root.appendChild( listContainer );
6621
6708
 
6622
6709
  this._updateValues( values );
6623
6710
 
6624
- // Remove branch padding and margins
6625
- const useNameAsLabel = !( options.hideName ?? false );
6626
- if( !useNameAsLabel )
6627
- {
6628
- this.root.className += " noname";
6629
- listContainer.style.width = "100%";
6630
- }
6631
-
6632
- this.root.appendChild( listContainer );
6711
+ doAsync( this.onResize.bind( this ) );
6633
6712
  }
6634
6713
  }
6635
6714
 
@@ -6655,20 +6734,25 @@ class Tags extends Widget {
6655
6734
 
6656
6735
  this.onSetValue = ( newValue, skipCallback, event ) => {
6657
6736
  value = [].concat( newValue );
6658
- _generateTags();
6737
+ this.generateTags( value );
6659
6738
  if( !skipCallback )
6660
6739
  {
6661
6740
  this._trigger( new IEvent( name, value, event ), callback );
6662
6741
  }
6663
6742
  };
6664
6743
 
6744
+ this.onResize = ( rect ) => {
6745
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6746
+ tagsContainer.style.width = `calc( 100% - ${ realNameWidth }px)`;
6747
+ };
6748
+
6665
6749
  // Show tags
6666
6750
 
6667
6751
  const tagsContainer = document.createElement('div');
6668
6752
  tagsContainer.className = "lextags";
6669
- tagsContainer.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6753
+ this.root.appendChild( tagsContainer );
6670
6754
 
6671
- const _generateTags = () => {
6755
+ this.generateTags = ( value ) => {
6672
6756
 
6673
6757
  tagsContainer.innerHTML = "";
6674
6758
 
@@ -6712,17 +6796,9 @@ class Tags extends Widget {
6712
6796
  tagInput.focus();
6713
6797
  }
6714
6798
 
6715
- _generateTags();
6799
+ this.generateTags( value );
6716
6800
 
6717
- // Remove branch padding and margins
6718
- const useNameAsLabel = !( options.hideName ?? false );
6719
- if( !useNameAsLabel )
6720
- {
6721
- this.root.className += " noname";
6722
- tagsContainer.style.width = "100%";
6723
- }
6724
-
6725
- this.root.appendChild( tagsContainer );
6801
+ doAsync( this.onResize.bind( this ) );
6726
6802
  }
6727
6803
  }
6728
6804
 
@@ -6766,31 +6842,33 @@ class Checkbox extends Widget {
6766
6842
  }
6767
6843
  };
6768
6844
 
6845
+ this.onResize = ( rect ) => {
6846
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6847
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
6848
+ };
6849
+
6769
6850
  var container = document.createElement( "div" );
6770
6851
  container.className = "lexcheckboxcont";
6852
+ this.root.appendChild( container );
6771
6853
 
6772
6854
  let checkbox = document.createElement( "input" );
6773
6855
  checkbox.type = "checkbox";
6774
6856
  checkbox.className = "lexcheckbox " + ( options.className ?? "" );
6775
6857
  checkbox.checked = value;
6776
6858
  checkbox.disabled = options.disabled ?? false;
6859
+ container.appendChild( checkbox );
6777
6860
 
6778
6861
  let valueName = document.createElement( "span" );
6779
6862
  valueName.className = "checkboxtext";
6780
6863
  valueName.innerHTML = options.label ?? "On";
6781
-
6782
- container.appendChild( checkbox );
6783
6864
  container.appendChild( valueName );
6784
6865
 
6785
6866
  checkbox.addEventListener( "change" , e => {
6786
6867
  this.set( checkbox.checked, false, e );
6787
6868
  });
6788
6869
 
6789
- this.root.appendChild( container );
6790
-
6791
6870
  if( options.suboptions )
6792
6871
  {
6793
- this.root.style.flexWrap = "wrap";
6794
6872
  let suboptions = document.createElement( "div" );
6795
6873
  suboptions.className = "lexcheckboxsubmenu";
6796
6874
  suboptions.toggleAttribute( "hidden", !checkbox.checked );
@@ -6802,6 +6880,8 @@ class Checkbox extends Widget {
6802
6880
 
6803
6881
  this.root.appendChild( suboptions );
6804
6882
  }
6883
+
6884
+ doAsync( this.onResize.bind( this ) );
6805
6885
  }
6806
6886
  }
6807
6887
 
@@ -6816,6 +6896,11 @@ class Toggle extends Widget {
6816
6896
 
6817
6897
  constructor( name, value, callback, options = {} ) {
6818
6898
 
6899
+ if( !name && !options.label )
6900
+ {
6901
+ throw( "Set Widget Name or at least a label!" );
6902
+ }
6903
+
6819
6904
  super( Widget.TOGGLE, name, value, options );
6820
6905
 
6821
6906
  this.onGetValue = () => {
@@ -6840,8 +6925,14 @@ class Toggle extends Widget {
6840
6925
  }
6841
6926
  };
6842
6927
 
6928
+ this.onResize = ( rect ) => {
6929
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6930
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
6931
+ };
6932
+
6843
6933
  var container = document.createElement('div');
6844
6934
  container.className = "lextogglecont";
6935
+ this.root.appendChild( container );
6845
6936
 
6846
6937
  let toggle = document.createElement('input');
6847
6938
  toggle.type = "checkbox";
@@ -6849,23 +6940,19 @@ class Toggle extends Widget {
6849
6940
  toggle.checked = value;
6850
6941
  toggle.iValue = value;
6851
6942
  toggle.disabled = options.disabled ?? false;
6943
+ container.appendChild( toggle );
6852
6944
 
6853
6945
  let valueName = document.createElement( 'span' );
6854
6946
  valueName.className = "toggletext";
6855
- valueName.innerHTML = "On";
6856
-
6857
- container.appendChild( toggle );
6947
+ valueName.innerHTML = options.label ?? "On";
6858
6948
  container.appendChild( valueName );
6859
6949
 
6860
6950
  toggle.addEventListener( "change" , e => {
6861
6951
  this.set( toggle.checked, false, e );
6862
6952
  });
6863
6953
 
6864
- this.root.appendChild( container );
6865
-
6866
6954
  if( options.suboptions )
6867
6955
  {
6868
- this.root.style.flexWrap = "wrap";
6869
6956
  let suboptions = document.createElement('div');
6870
6957
  suboptions.className = "lextogglesubmenu";
6871
6958
  suboptions.toggleAttribute( 'hidden', !toggle.checked );
@@ -6877,6 +6964,8 @@ class Toggle extends Widget {
6877
6964
 
6878
6965
  this.root.appendChild( suboptions );
6879
6966
  }
6967
+
6968
+ doAsync( this.onResize.bind( this ) );
6880
6969
  }
6881
6970
  }
6882
6971
 
@@ -6921,6 +7010,7 @@ class RadioGroup extends Widget {
6921
7010
 
6922
7011
  var container = document.createElement( 'div' );
6923
7012
  container.className = "lexradiogroup " + ( options.className ?? "" );
7013
+ this.root.appendChild( container );
6924
7014
 
6925
7015
  let labelSpan = document.createElement( 'span' );
6926
7016
  labelSpan.innerHTML = label;
@@ -6955,8 +7045,6 @@ class RadioGroup extends Widget {
6955
7045
  currentIndex = options.selected;
6956
7046
  this.set( currentIndex, true );
6957
7047
  }
6958
-
6959
- this.root.appendChild( container );
6960
7048
  }
6961
7049
  }
6962
7050
 
@@ -7000,9 +7088,14 @@ class ColorInput extends Widget {
7000
7088
  }
7001
7089
  };
7002
7090
 
7091
+ this.onResize = ( rect ) => {
7092
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7093
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7094
+ };
7095
+
7003
7096
  var container = document.createElement( 'span' );
7004
7097
  container.className = "lexcolor";
7005
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7098
+ this.root.appendChild( container );
7006
7099
 
7007
7100
  let color = document.createElement( 'input' );
7008
7101
  color.style.width = "32px";
@@ -7011,6 +7104,7 @@ class ColorInput extends Widget {
7011
7104
  color.id = "color" + simple_guidGenerator();
7012
7105
  color.useRGB = options.useRGB ?? false;
7013
7106
  color.value = color.iValue = value;
7107
+ container.appendChild( color );
7014
7108
 
7015
7109
  if( options.disabled )
7016
7110
  {
@@ -7021,17 +7115,14 @@ class ColorInput extends Widget {
7021
7115
  this.set( e.target.value, false, e );
7022
7116
  }, false );
7023
7117
 
7024
- container.appendChild( color );
7025
-
7026
7118
  const textWidget = new TextInput( null, color.value, v => {
7027
7119
  this.set( v );
7028
7120
  }, { width: "calc( 100% - 32px )"});
7029
7121
 
7030
7122
  textWidget.root.style.marginLeft = "4px";
7031
-
7032
7123
  container.appendChild( textWidget.root );
7033
7124
 
7034
- this.root.appendChild( container );
7125
+ doAsync( this.onResize.bind( this ) );
7035
7126
  }
7036
7127
  }
7037
7128
 
@@ -7067,9 +7158,14 @@ class RangeInput extends Widget {
7067
7158
  }
7068
7159
  };
7069
7160
 
7070
- var container = document.createElement( 'div' );
7161
+ this.onResize = ( rect ) => {
7162
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7163
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
7164
+ };
7165
+
7166
+ const container = document.createElement( 'div' );
7071
7167
  container.className = "lexrange";
7072
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7168
+ this.root.appendChild( container );
7073
7169
 
7074
7170
  let slider = document.createElement( 'input' );
7075
7171
  slider.className = "lexrangeslider " + ( options.className ?? "" );
@@ -7079,6 +7175,7 @@ class RangeInput extends Widget {
7079
7175
  slider.step = options.step ?? 1;
7080
7176
  slider.type = "range";
7081
7177
  slider.disabled = options.disabled ?? false;
7178
+ container.appendChild( slider );
7082
7179
 
7083
7180
  if( options.left ?? false )
7084
7181
  {
@@ -7121,15 +7218,7 @@ class RangeInput extends Widget {
7121
7218
  value = clamp( value, +slider.min, +slider.max );
7122
7219
  }
7123
7220
 
7124
- container.appendChild( slider );
7125
- this.root.appendChild( container );
7126
-
7127
- const useNameAsLabel = !( options.hideName ?? false );
7128
- if( !useNameAsLabel )
7129
- {
7130
- this.root.className += " noname";
7131
- container.style.width = "100%";
7132
- }
7221
+ doAsync( this.onResize.bind( this ) );
7133
7222
  }
7134
7223
  }
7135
7224
 
@@ -7177,12 +7266,18 @@ class NumberInput extends Widget {
7177
7266
  }
7178
7267
  };
7179
7268
 
7269
+ this.onResize = ( rect ) => {
7270
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7271
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
7272
+ };
7273
+
7180
7274
  var container = document.createElement( 'div' );
7181
7275
  container.className = "lexnumber";
7182
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7276
+ this.root.appendChild( container );
7183
7277
 
7184
7278
  let box = document.createElement( 'div' );
7185
7279
  box.className = "numberbox";
7280
+ container.appendChild( box );
7186
7281
 
7187
7282
  let vecinput = document.createElement( 'input' );
7188
7283
  vecinput.id = "number_" + simple_guidGenerator();
@@ -7356,16 +7451,7 @@ class NumberInput extends Widget {
7356
7451
 
7357
7452
  vecinput.addEventListener( "mousedown", innerMouseDown );
7358
7453
 
7359
- container.appendChild( box );
7360
- this.root.appendChild( container );
7361
-
7362
- // Remove branch padding and margins
7363
- const useNameAsLabel = !( options.hideName ?? false );
7364
- if( !useNameAsLabel )
7365
- {
7366
- this.root.className += " noname";
7367
- container.style.width = "100%";
7368
- }
7454
+ doAsync( this.onResize.bind( this ) );
7369
7455
  }
7370
7456
  }
7371
7457
 
@@ -7417,11 +7503,16 @@ class Vector extends Widget {
7417
7503
  }
7418
7504
  };
7419
7505
 
7506
+ this.onResize = ( rect ) => {
7507
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7508
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7509
+ };
7510
+
7420
7511
  const vectorInputs = [];
7421
7512
 
7422
7513
  var container = document.createElement( 'div' );
7423
7514
  container.className = "lexvector";
7424
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7515
+ this.root.appendChild( container );
7425
7516
 
7426
7517
  const that = this;
7427
7518
 
@@ -7624,7 +7715,7 @@ class Vector extends Widget {
7624
7715
  }
7625
7716
  }, false );
7626
7717
 
7627
- this.root.appendChild( container );
7718
+ doAsync( this.onResize.bind( this ) );
7628
7719
  }
7629
7720
  }
7630
7721
 
@@ -7725,14 +7816,6 @@ class SizeInput extends Widget {
7725
7816
  }
7726
7817
  }, false );
7727
7818
  }
7728
-
7729
- // Remove branch padding and margins
7730
- const useNameAsLabel = !( options.hideName ?? false );
7731
- if( !useNameAsLabel )
7732
- {
7733
- this.root.className += " noname";
7734
- container.style.width = "100%";
7735
- }
7736
7819
  }
7737
7820
  }
7738
7821
 
@@ -7762,21 +7845,28 @@ class Pad extends Widget {
7762
7845
  }
7763
7846
  };
7764
7847
 
7848
+ this.onResize = ( rect ) => {
7849
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7850
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7851
+ };
7852
+
7765
7853
  var container = document.createElement( 'div' );
7766
7854
  container.className = "lexpad";
7767
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7855
+ this.root.appendChild( container );
7768
7856
 
7769
7857
  let pad = document.createElement('div');
7770
7858
  pad.id = "lexpad-" + name;
7771
7859
  pad.className = "lexinnerpad";
7772
7860
  pad.style.width = options.padSize ?? '96px';
7773
7861
  pad.style.height = options.padSize ?? '96px';
7862
+ container.appendChild( pad );
7774
7863
 
7775
7864
  let thumb = document.createElement('div');
7776
7865
  thumb.className = "lexpadthumb";
7777
7866
  thumb.value = new LX.vec2( value[ 0 ], value[ 1 ] );
7778
7867
  thumb.min = options.min ?? 0;
7779
7868
  thumb.max = options.max ?? 1;
7869
+ pad.appendChild( thumb );
7780
7870
 
7781
7871
  let _updateValue = v => {
7782
7872
  const [ w, h ] = [ pad.offsetWidth, pad.offsetHeight ];
@@ -7784,14 +7874,6 @@ class Pad extends Widget {
7784
7874
  thumb.style.transform = `translate(calc( ${ w * value0to1.x }px - 50% ), calc( ${ h * value0to1.y }px - 50%)`;
7785
7875
  }
7786
7876
 
7787
- doAsync( () => {
7788
- _updateValue( thumb.value )
7789
- } );
7790
-
7791
- pad.appendChild( thumb );
7792
- container.appendChild( pad );
7793
- this.root.appendChild( container );
7794
-
7795
7877
  pad.addEventListener( "mousedown", innerMouseDown );
7796
7878
 
7797
7879
  let that = this;
@@ -7810,6 +7892,7 @@ class Pad extends Widget {
7810
7892
  document.body.classList.add( 'noevents' );
7811
7893
  e.stopImmediatePropagation();
7812
7894
  e.stopPropagation();
7895
+ thumb.classList.add( "active" );
7813
7896
 
7814
7897
  if( options.onPress )
7815
7898
  {
@@ -7841,12 +7924,18 @@ class Pad extends Widget {
7841
7924
  doc.removeEventListener( 'mouseup', innerMouseUp );
7842
7925
  document.body.classList.remove( 'nocursor' );
7843
7926
  document.body.classList.remove( 'noevents' );
7927
+ thumb.classList.remove( "active" );
7844
7928
 
7845
7929
  if( options.onRelease )
7846
7930
  {
7847
7931
  options.onRelease.bind( thumb )( e, thumb );
7848
7932
  }
7849
7933
  }
7934
+
7935
+ doAsync( () => {
7936
+ this.onResize();
7937
+ _updateValue( thumb.value )
7938
+ } );
7850
7939
  }
7851
7940
  }
7852
7941
 
@@ -7876,9 +7965,14 @@ class Progress extends Widget {
7876
7965
  }
7877
7966
  };
7878
7967
 
7879
- var container = document.createElement('div');
7968
+ this.onResize = ( rect ) => {
7969
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7970
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7971
+ };
7972
+
7973
+ const container = document.createElement('div');
7880
7974
  container.className = "lexprogress";
7881
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7975
+ this.root.appendChild( container );
7882
7976
 
7883
7977
  // add slider (0-1 if not specified different )
7884
7978
 
@@ -7892,6 +7986,7 @@ class Progress extends Widget {
7892
7986
  progress.high = options.high ?? progress.high;
7893
7987
  progress.optimum = options.optimum ?? progress.optimum;
7894
7988
  progress.value = value;
7989
+ container.appendChild( progress );
7895
7990
 
7896
7991
  const _updateColor = () => {
7897
7992
 
@@ -7909,9 +8004,6 @@ class Progress extends Widget {
7909
8004
  progress.style.background = `color-mix(in srgb, ${backgroundColor} 20%, transparent)`;
7910
8005
  };
7911
8006
 
7912
- container.appendChild( progress );
7913
- this.root.appendChild( container );
7914
-
7915
8007
  if( options.showValue )
7916
8008
  {
7917
8009
  if( document.getElementById('progressvalue-' + name ) )
@@ -7978,6 +8070,8 @@ class Progress extends Widget {
7978
8070
  }
7979
8071
 
7980
8072
  _updateColor();
8073
+
8074
+ doAsync( this.onResize.bind( this ) );
7981
8075
  }
7982
8076
  }
7983
8077
 
@@ -7998,12 +8092,17 @@ class FileInput extends Widget {
7998
8092
  let type = options.type ?? 'text';
7999
8093
  let read = options.read ?? true;
8000
8094
 
8095
+ this.onResize = ( rect ) => {
8096
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
8097
+ input.style.width = `calc( 100% - ${ realNameWidth }px)`;
8098
+ };
8099
+
8001
8100
  // Create hidden input
8002
8101
  let input = document.createElement( 'input' );
8003
8102
  input.className = "lexfileinput";
8004
- input.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " - 10%)";
8005
8103
  input.type = 'file';
8006
8104
  input.disabled = options.disabled ?? false;
8105
+ this.root.appendChild( input );
8007
8106
 
8008
8107
  if( options.placeholder )
8009
8108
  {
@@ -8036,8 +8135,6 @@ class FileInput extends Widget {
8036
8135
  callback( null );
8037
8136
  });
8038
8137
 
8039
- this.root.appendChild( input );
8040
-
8041
8138
  if( local )
8042
8139
  {
8043
8140
  let settingsDialog = null;
@@ -8058,6 +8155,8 @@ class FileInput extends Widget {
8058
8155
 
8059
8156
  this.root.appendChild( settingButton.root );
8060
8157
  }
8158
+
8159
+ doAsync( this.onResize.bind( this ) );
8061
8160
  }
8062
8161
  }
8063
8162
 
@@ -8298,7 +8397,6 @@ class Counter extends Widget {
8298
8397
  if( e.shiftKey ) mult *= 10;
8299
8398
  this.set( counterText.count + mult, false, e );
8300
8399
  }, { className: "micro", skipInlineCount: true, title: "Plus" });
8301
-
8302
8400
  container.appendChild( addButton.root );
8303
8401
  }
8304
8402
  }
@@ -8321,28 +8419,140 @@ class Table extends Widget {
8321
8419
 
8322
8420
  super( Widget.TABLE, name, null, options );
8323
8421
 
8422
+ this.onResize = ( rect ) => {
8423
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
8424
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
8425
+ };
8426
+
8324
8427
  const container = document.createElement('div');
8325
8428
  container.className = "lextable";
8326
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
8429
+ this.root.appendChild( container );
8327
8430
 
8328
- const table = document.createElement( 'table' );
8329
- container.appendChild( table );
8431
+ this.centered = options.centered ?? false;
8432
+ if( this.centered === true )
8433
+ {
8434
+ container.classList.add( "centered" );
8435
+ }
8436
+
8437
+ this.filter = options.filter ?? false;
8438
+ this.toggleColumns = options.toggleColumns ?? false;
8439
+ this.customFilters = options.customFilters ?? false;
8440
+ this.activeCustomFilters = {};
8330
8441
 
8331
8442
  data.head = data.head ?? [];
8332
8443
  data.body = data.body ?? [];
8333
- data.orderMap = { };
8334
8444
  data.checkMap = { };
8445
+ data.colVisibilityMap = { };
8446
+ data.head.forEach( (col, index) => { data.colVisibilityMap[ index ] = true; })
8335
8447
 
8336
- function compareFn( idx, order, a, b) {
8448
+ const compareFn = ( idx, order, a, b) => {
8337
8449
  if (a[idx] < b[idx]) return -order;
8338
8450
  else if (a[idx] > b[idx]) return order;
8339
8451
  return 0;
8340
8452
  }
8341
8453
 
8342
- this.refreshTable = () => {
8454
+ const sortFn = ( idx, sign ) => {
8455
+ data.body = data.body.sort( compareFn.bind( this, idx, sign ) );
8456
+ this.refresh();
8457
+ }
8458
+
8459
+ // Append header
8460
+ if( this.filter || this.customFilters || this.toggleColumns )
8461
+ {
8462
+ const headerContainer = LX.makeContainer( [ "100%", "auto" ] );
8463
+
8464
+ if( this.filter )
8465
+ {
8466
+ const filterOptions = LX.deepCopy( options );
8467
+ filterOptions.placeholder = `Filter ${ this.filter }...`;
8468
+ filterOptions.skipWidget = true;
8469
+ filterOptions.trigger = "input";
8470
+ filterOptions.textClass = "outline";
8471
+
8472
+ let filter = new TextInput(null, "", ( v ) => {
8473
+ this._currentFilter = v;
8474
+ this.refresh();
8475
+ }, filterOptions );
8476
+
8477
+ headerContainer.appendChild( filter.root );
8478
+ }
8479
+
8480
+ if( this.customFilters )
8481
+ {
8482
+ const icon = LX.makeIcon( "circle-plus", null, "sm" );
8483
+
8484
+ for( let f of this.customFilters )
8485
+ {
8486
+ const customFilterBtn = new Button(null, icon.innerHTML + f.name, ( v ) => {
8487
+
8488
+ const menuOptions = f.options.map( ( colName, idx ) => {
8489
+ const item = {
8490
+ name: colName,
8491
+ checked: !!this.activeCustomFilters[ colName ],
8492
+ callback: (key, dom, v) => {
8493
+ if( v ) { this.activeCustomFilters[ key ] = f.name; }
8494
+ else {
8495
+ delete this.activeCustomFilters[ key ];
8496
+ }
8497
+ this.refresh();
8498
+ }
8499
+ }
8500
+ return item;
8501
+ } );
8502
+ new DropdownMenu( customFilterBtn.root, menuOptions, { side: "bottom", align: "start" });
8503
+ }, { buttonClass: "dashed" } );
8504
+ headerContainer.appendChild( customFilterBtn.root );
8505
+ }
8506
+
8507
+ // const resetIcon = LX.makeIcon( "xmark", null, "sm" );
8508
+ this._resetCustomFiltersBtn = new Button(null, "resetButton", ( v ) => {
8509
+ this.activeCustomFilters = {};
8510
+ this.refresh();
8511
+ this._resetCustomFiltersBtn.root.classList.add( "hidden" );
8512
+ }, { title: "Reset filters", icon: "fa fa-xmark" } );
8513
+ headerContainer.appendChild( this._resetCustomFiltersBtn.root );
8514
+ this._resetCustomFiltersBtn.root.classList.add( "hidden" );
8515
+ }
8516
+
8517
+ if( this.toggleColumns )
8518
+ {
8519
+ const icon = LX.makeIcon( "sliders" );
8520
+ const toggleColumnsBtn = new Button( "toggleColumnsBtn", icon.innerHTML + "View", (value, e) => {
8521
+ const menuOptions = data.head.map( ( colName, idx ) => {
8522
+ const item = {
8523
+ name: colName,
8524
+ icon: "check",
8525
+ callback: () => {
8526
+ data.colVisibilityMap[ idx ] = !data.colVisibilityMap[ idx ];
8527
+ const cells = table.querySelectorAll(`tr > *:nth-child(${idx + this.rowOffsetCount + 1})`);
8528
+ cells.forEach(cell => {
8529
+ cell.style.display = (cell.style.display === "none") ? "" : "none";
8530
+ });
8531
+ }
8532
+ }
8533
+ if( !data.colVisibilityMap[ idx ] ) delete item.icon;
8534
+ return item;
8535
+ } );
8536
+ new DropdownMenu( e.target, menuOptions, { side: "bottom", align: "end" });
8537
+ }, { hideName: true } );
8538
+ headerContainer.appendChild( toggleColumnsBtn.root );
8539
+ toggleColumnsBtn.root.style.marginLeft = "auto";
8540
+ }
8541
+
8542
+ container.appendChild( headerContainer );
8543
+ }
8544
+
8545
+ const table = document.createElement( 'table' );
8546
+ container.appendChild( table );
8547
+
8548
+ this.refresh = () => {
8549
+
8550
+ this._currentFilter = this._currentFilter ?? "";
8343
8551
 
8344
8552
  table.innerHTML = "";
8345
8553
 
8554
+ this.rowOffsetCount = 0;
8555
+
8346
8556
  // Head
8347
8557
  {
8348
8558
  const head = document.createElement( 'thead' );
@@ -8356,6 +8566,7 @@ class Table extends Widget {
8356
8566
  const th = document.createElement( 'th' );
8357
8567
  th.style.width = "0px";
8358
8568
  hrow.appendChild( th );
8569
+ this.rowOffsetCount++;
8359
8570
  }
8360
8571
 
8361
8572
  if( options.selectable )
@@ -8380,27 +8591,45 @@ class Table extends Widget {
8380
8591
  }
8381
8592
  });
8382
8593
 
8594
+ this.rowOffsetCount++;
8383
8595
  hrow.appendChild( th );
8384
8596
  }
8385
8597
 
8386
8598
  for( const headData of data.head )
8387
8599
  {
8388
8600
  const th = document.createElement( 'th' );
8389
- th.innerHTML = `${ headData } <a class="fa-solid fa-sort"></a>`;
8390
-
8391
- th.querySelector( 'a' ).addEventListener( 'click', () => {
8601
+ th.innerHTML = `<span>${ headData }</span>`;
8602
+ th.querySelector( "span" ).appendChild( LX.makeIcon( "menu-arrows", null, "sm" ) );
8392
8603
 
8393
- if( !data.orderMap[ headData ] )
8394
- {
8395
- data.orderMap[ headData ] = 1;
8396
- }
8604
+ const idx = data.head.indexOf( headData );
8605
+ if( this.centered && this.centered.indexOf( idx ) > -1 )
8606
+ {
8607
+ th.classList.add( "centered" );
8608
+ }
8397
8609
 
8398
- const idx = data.head.indexOf(headData);
8399
- data.body = data.body.sort( compareFn.bind( this, idx,data.orderMap[ headData ] ) );
8400
- data.orderMap[ headData ] = -data.orderMap[ headData ];
8610
+ const menuOptions = [
8611
+ { name: "Asc", icon: "up", callback: sortFn.bind( this, idx, 1 ) },
8612
+ { name: "Desc", icon: "down", callback: sortFn.bind( this, idx, -1 ) }
8613
+ ];
8401
8614
 
8402
- this.refreshTable();
8615
+ if( this.toggleColumns )
8616
+ {
8617
+ menuOptions.push(
8618
+ null,
8619
+ {
8620
+ name: "Hide", icon: "eye-slash", callback: () => {
8621
+ data.colVisibilityMap[ idx ] = false;
8622
+ const cells = table.querySelectorAll(`tr > *:nth-child(${idx + this.rowOffsetCount + 1})`);
8623
+ cells.forEach(cell => {
8624
+ cell.style.display = (cell.style.display === "none") ? "" : "none";
8625
+ });
8626
+ }
8627
+ }
8628
+ );
8629
+ }
8403
8630
 
8631
+ th.addEventListener( 'click', event => {
8632
+ new DropdownMenu( event.target, menuOptions, { side: "bottom", align: "start" });
8404
8633
  });
8405
8634
 
8406
8635
  hrow.appendChild( th );
@@ -8438,15 +8667,23 @@ class Table extends Widget {
8438
8667
  v.style.transition = `none`;
8439
8668
  } );
8440
8669
  flushCss( fromRow );
8441
- rIdx = null;
8442
8670
 
8443
8671
  if( movePending )
8444
8672
  {
8673
+ // Modify inner data first
8674
+ const fromIdx = rIdx - 1;
8675
+ const targetIdx = movePending[ 1 ] - 1;
8676
+ var b = data.body[fromIdx];
8677
+ data.body[fromIdx] = data.body[targetIdx];
8678
+ data.body[targetIdx] = b;
8679
+
8445
8680
  const parent = movePending[ 0 ].parentNode;
8446
8681
  parent.insertChildAtIndex( movePending[ 0 ], movePending[ 1 ] );
8447
8682
  movePending = null;
8448
8683
  }
8449
8684
 
8685
+ rIdx = null;
8686
+
8450
8687
  doAsync( () => {
8451
8688
  Array.from( table.rows ).forEach( v => {
8452
8689
  v.style.transition = `transform 0.2s ease-in`;
@@ -8462,10 +8699,47 @@ class Table extends Widget {
8462
8699
  fromRow.style.transform = `translateY(${fromRow.dY}px)`;
8463
8700
  };
8464
8701
 
8465
-
8466
8702
  for( let r = 0; r < data.body.length; ++r )
8467
8703
  {
8468
8704
  const bodyData = data.body[ r ];
8705
+
8706
+ if( this.filter )
8707
+ {
8708
+ const filterColIndex = data.head.indexOf( this.filter );
8709
+ if( filterColIndex > -1 )
8710
+ {
8711
+ if( !bodyData[ filterColIndex ].toLowerCase().includes( this._currentFilter.toLowerCase() ) )
8712
+ {
8713
+ continue;
8714
+ }
8715
+ }
8716
+ }
8717
+
8718
+ if( Object.keys( this.activeCustomFilters ).length )
8719
+ {
8720
+ let acfMap = {};
8721
+
8722
+ this._resetCustomFiltersBtn.root.classList.remove( "hidden" );
8723
+
8724
+ for( let acfValue in this.activeCustomFilters )
8725
+ {
8726
+ const acfName = this.activeCustomFilters[ acfValue ];
8727
+ acfMap[ acfName ] = acfMap[ acfName ] ?? false;
8728
+
8729
+ const filterColIndex = data.head.indexOf( acfName );
8730
+ if( filterColIndex > -1 )
8731
+ {
8732
+ acfMap[ acfName ] |= ( bodyData[ filterColIndex ] === acfValue );
8733
+ }
8734
+ }
8735
+
8736
+ const show = Object.values( acfMap ).reduce( ( e, acc ) => acc *= e );
8737
+ if( !show )
8738
+ {
8739
+ continue;
8740
+ }
8741
+ }
8742
+
8469
8743
  const row = document.createElement( 'tr' );
8470
8744
  const rowId = LX.getSupportedDOMName( bodyData.join( '-' ) );
8471
8745
  row.setAttribute( "rowId", rowId.substr(0, 16) );
@@ -8540,6 +8814,13 @@ class Table extends Widget {
8540
8814
  {
8541
8815
  const td = document.createElement( 'td' );
8542
8816
  td.innerHTML = `${ rowData }`;
8817
+
8818
+ const idx = bodyData.indexOf( rowData );
8819
+ if( this.centered && this.centered.indexOf( idx ) > -1 )
8820
+ {
8821
+ td.classList.add( "centered" );
8822
+ }
8823
+
8543
8824
  row.appendChild( td );
8544
8825
  }
8545
8826
 
@@ -8569,14 +8850,15 @@ class Table extends Widget {
8569
8850
  {
8570
8851
  button = LX.makeIcon( "more-horizontal", "Menu" );
8571
8852
  button.addEventListener( 'click', function( event ) {
8572
- addContextMenu( null, event, c => {
8573
- if( options.onMenuAction )
8574
- {
8575
- options.onMenuAction( c );
8576
- return;
8577
- }
8578
- console.warn( "Using <Menu action> without action callbacks." );
8579
- } );
8853
+ if( !options.onMenuAction )
8854
+ {
8855
+ return;
8856
+ }
8857
+
8858
+ const menuOptions = options.onMenuAction( r, data );
8859
+ console.assert( menuOptions.length, "Add items to the Menu Action Dropdown!" );
8860
+
8861
+ new DropdownMenu( event.target, menuOptions, { side: "bottom", align: "end" });
8580
8862
  });
8581
8863
  }
8582
8864
  else // custom actions
@@ -8590,7 +8872,7 @@ class Table extends Widget {
8590
8872
  const mustRefresh = action.callback( bodyData, table, e );
8591
8873
  if( mustRefresh )
8592
8874
  {
8593
- this.refreshTable();
8875
+ this.refresh();
8594
8876
  }
8595
8877
  });
8596
8878
  }
@@ -8606,18 +8888,23 @@ class Table extends Widget {
8606
8888
  body.appendChild( row );
8607
8889
  }
8608
8890
  }
8609
- }
8610
8891
 
8611
- this.refreshTable();
8612
-
8613
- const useNameAsLabel = !( options.hideName ?? false );
8614
- if( !useNameAsLabel )
8615
- {
8616
- this.root.className += " noname";
8617
- container.style.width = "100%";
8892
+ for( const v in data.colVisibilityMap )
8893
+ {
8894
+ const idx = parseInt( v );
8895
+ if( !data.colVisibilityMap[ idx ] )
8896
+ {
8897
+ const cells = table.querySelectorAll(`tr > *:nth-child(${idx + this.rowOffsetCount + 1})`);
8898
+ cells.forEach(cell => {
8899
+ cell.style.display = (cell.style.display === "none") ? "" : "none";
8900
+ });
8901
+ }
8902
+ }
8618
8903
  }
8619
8904
 
8620
- this.root.appendChild( container );
8905
+ this.refresh();
8906
+
8907
+ doAsync( this.onResize.bind( this ) );
8621
8908
  }
8622
8909
  }
8623
8910
 
@@ -8990,7 +9277,7 @@ class Panel {
8990
9277
 
8991
9278
  let widget = new TextInput( null, null, null, options )
8992
9279
  const element = widget.root;
8993
- element.className += " lexfilter noname";
9280
+ element.className += " lexfilter";
8994
9281
 
8995
9282
  let input = document.createElement('input');
8996
9283
  input.className = 'lexinput-filter';
@@ -9003,7 +9290,7 @@ class Panel {
9003
9290
  element.appendChild( searchIcon );
9004
9291
  element.appendChild( input );
9005
9292
 
9006
- input.addEventListener("input", (e) => {
9293
+ input.addEventListener("input", e => {
9007
9294
  if( options.callback )
9008
9295
  {
9009
9296
  options.callback( input.value, e );
@@ -9488,6 +9775,7 @@ class Panel {
9488
9775
  * @param {Function} callback Callback function on change
9489
9776
  * @param {Object} options:
9490
9777
  * disabled: Make the widget disabled [false]
9778
+ * label: Toggle label
9491
9779
  * suboptions: Callback to add widgets in case of TRUE value
9492
9780
  * className: Customize colors
9493
9781
  */
@@ -9734,6 +10022,7 @@ class Panel {
9734
10022
  * onMenuAction: Function callback to fill the "menu" context
9735
10023
  * selectable: Each row can be selected
9736
10024
  * sortable: Rows can be sorted by the user manually
10025
+ * centered: Center text within columns. true for all, Array for center selected cols.
9737
10026
  */
9738
10027
 
9739
10028
  addTable( name, data, options = { } ) {
@@ -9791,7 +10080,7 @@ class Branch {
9791
10080
  var branchContent = document.createElement( 'div' );
9792
10081
  branchContent.id = name.replace( /\s/g, '' );
9793
10082
  branchContent.className = "lexbranchcontent";
9794
- root.appendChild(branchContent);
10083
+ root.appendChild( branchContent );
9795
10084
  this.content = branchContent;
9796
10085
 
9797
10086
  this._addBranchSeparator();
@@ -9807,7 +10096,7 @@ class Branch {
9807
10096
  }
9808
10097
 
9809
10098
  this.onclick = function( e ) {
9810
- e.stopPropagation();
10099
+ // e.stopPropagation();
9811
10100
  this.classList.toggle( "closed" );
9812
10101
  this.parentElement.classList.toggle( "closed" );
9813
10102
 
@@ -9939,7 +10228,7 @@ class Branch {
9939
10228
  var size = this.grabber.style.marginLeft;
9940
10229
 
9941
10230
  // Update sizes of widgets inside
9942
- for( var i = 0; i < this.widgets.length; i++ )
10231
+ for( let i = 0; i < this.widgets.length; i++ )
9943
10232
  {
9944
10233
  let widget = this.widgets[ i ];
9945
10234
  const element = widget.root;
@@ -9949,26 +10238,21 @@ class Branch {
9949
10238
  continue;
9950
10239
  }
9951
10240
 
9952
- var name = element.children[ 0 ];
9953
- var value = element.children[ 1 ];
10241
+ let name = element.children[ 0 ];
10242
+ let value = element.children[ 1 ];
9954
10243
 
9955
10244
  name.style.width = size;
9956
- let padding = "0px";
10245
+
9957
10246
  switch( widget.type )
9958
10247
  {
9959
- case Widget.FILE:
9960
- padding = "10%";
9961
- break;
10248
+ case Widget.CUSTOM:
10249
+ case Widget.ARRAY:
10250
+ continue;
9962
10251
  };
9963
10252
 
9964
- value.style.width = "-moz-calc( 100% - " + size + " - " + padding + " )";
9965
- value.style.width = "-webkit-calc( 100% - " + size + " - " + padding + " )";
9966
- value.style.width = "calc( 100% - " + size + " - " + padding + " )";
9967
-
9968
- if( widget.onresize )
9969
- {
9970
- widget.onresize();
9971
- }
10253
+ value.style.width = "-moz-calc( 100% - " + size + " )";
10254
+ value.style.width = "-webkit-calc( 100% - " + size + " )";
10255
+ value.style.width = "calc( 100% - " + size + " )";
9972
10256
  }
9973
10257
  }
9974
10258
  };
@@ -10096,7 +10380,7 @@ class Dialog {
10096
10380
  draggable = options.draggable ?? true,
10097
10381
  modal = options.modal ?? false;
10098
10382
 
10099
- var root = document.createElement('dialog');
10383
+ let root = document.createElement('dialog');
10100
10384
  root.className = "lexdialog " + (options.className ?? "");
10101
10385
  root.id = options.id ?? "dialog" + Dialog._last_id++;
10102
10386
  LX.root.appendChild( root );
@@ -10107,7 +10391,7 @@ class Dialog {
10107
10391
 
10108
10392
  let that = this;
10109
10393
 
10110
- var titleDiv = document.createElement('div');
10394
+ const titleDiv = document.createElement('div');
10111
10395
 
10112
10396
  if( title )
10113
10397
  {
@@ -10172,7 +10456,7 @@ class Dialog {
10172
10456
  }, { icon: "fa-regular fa-window-restore" });
10173
10457
  };
10174
10458
 
10175
- root.appendChild(titleDiv);
10459
+ root.appendChild( titleDiv );
10176
10460
  }
10177
10461
 
10178
10462
  if( options.closable ?? true )
@@ -10371,7 +10655,7 @@ class PocketDialog extends Dialog {
10371
10655
 
10372
10656
  if( float )
10373
10657
  {
10374
- for( var i = 0; i < float.length; i++ )
10658
+ for( let i = 0; i < float.length; i++ )
10375
10659
  {
10376
10660
  const t = float[i];
10377
10661
  switch( t )
@@ -10504,14 +10788,14 @@ class ContextMenu {
10504
10788
  contextmenu.className = "lexcontextmenu";
10505
10789
  c.appendChild( contextmenu );
10506
10790
 
10507
- for( var i = 0; i < o[k].length; ++i )
10791
+ for( let i = 0; i < o[k].length; ++i )
10508
10792
  {
10509
10793
  const subitem = o[ k ][ i ];
10510
10794
  const subkey = Object.keys( subitem )[ 0 ];
10511
10795
  this._createEntry(subitem, subkey, contextmenu, d);
10512
10796
  }
10513
10797
 
10514
- var rect = c.getBoundingClientRect();
10798
+ const rect = c.getBoundingClientRect();
10515
10799
  contextmenu.style.left = rect.width + "px";
10516
10800
  contextmenu.style.marginTop = 3.5 - c.offsetHeight + "px";
10517
10801
 
@@ -10664,10 +10948,10 @@ class ContextMenu {
10664
10948
  _item[ key ].unshift( parent );
10665
10949
  }
10666
10950
 
10667
- for( var child of _item[ key ] )
10951
+ for( let child of _item[ key ] )
10668
10952
  {
10669
10953
  let k = Object.keys( child )[ 0 ];
10670
- for( var i = 0; i < child[ k ].length; ++i )
10954
+ for( let i = 0; i < child[ k ].length; ++i )
10671
10955
  {
10672
10956
  setParent( child );
10673
10957
  }
@@ -10708,7 +10992,7 @@ LX.ContextMenu = ContextMenu;
10708
10992
 
10709
10993
  function addContextMenu( title, event, callback, options )
10710
10994
  {
10711
- var menu = new ContextMenu( event, title, options );
10995
+ const menu = new ContextMenu( event, title, options );
10712
10996
  LX.root.appendChild( menu.root );
10713
10997
 
10714
10998
  if( callback )
@@ -10739,7 +11023,8 @@ class CanvasCurve {
10739
11023
  element.style.minHeight = "20px";
10740
11024
 
10741
11025
  element.bgcolor = options.bgColor || LX.getThemeColor( "global-intense-background" );
10742
- element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected-light" );
11026
+ element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected" );
11027
+ element.activepointscolor = options.activePointsColor || LX.getThemeColor( "global-selected-light" );
10743
11028
  element.linecolor = options.lineColor || "#555";
10744
11029
  element.value = value || [];
10745
11030
  element.xrange = options.xrange || [ 0, 1 ]; // min, max
@@ -10755,7 +11040,8 @@ class CanvasCurve {
10755
11040
 
10756
11041
  LX.addSignal( "@on_new_color_scheme", (el, value) => {
10757
11042
  element.bgcolor = options.bgColor || LX.getThemeColor( "global-intense-background" );
10758
- element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected-light" );
11043
+ element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected" );
11044
+ element.activepointscolor = options.activePointsColor || LX.getThemeColor( "global-selected-light" );
10759
11045
  this.redraw();
10760
11046
  } );
10761
11047
 
@@ -10776,11 +11062,11 @@ class CanvasCurve {
10776
11062
  return element.defaulty;
10777
11063
  }
10778
11064
 
10779
- var last = [ element.xrange[ 0 ], element.defaulty ];
10780
- var f = 0;
10781
- for( var i = 0; i < element.value.length; i += 1 )
11065
+ let last = [ element.xrange[ 0 ], element.defaulty ];
11066
+ let f = 0;
11067
+ for( let i = 0; i < element.value.length; i += 1 )
10782
11068
  {
10783
- var v = element.value[ i ];
11069
+ let v = element.value[ i ];
10784
11070
  if( x == v[ 0 ] ) return v[ 1 ];
10785
11071
  if( x < v[ 0 ] )
10786
11072
  {
@@ -10798,9 +11084,9 @@ class CanvasCurve {
10798
11084
 
10799
11085
  element.resample = function( samples ) {
10800
11086
 
10801
- var r = [];
10802
- var dx = (element.xrange[1] - element.xrange[ 0 ]) / samples;
10803
- for( var i = element.xrange[0]; i <= element.xrange[1]; i += dx )
11087
+ let r = [];
11088
+ let dx = (element.xrange[1] - element.xrange[ 0 ]) / samples;
11089
+ for( let i = element.xrange[0]; i <= element.xrange[1]; i += dx )
10804
11090
  {
10805
11091
  r.push( element.getValueAt(i) );
10806
11092
  }
@@ -10809,9 +11095,9 @@ class CanvasCurve {
10809
11095
 
10810
11096
  element.addValue = function(v) {
10811
11097
 
10812
- for( var i = 0; i < element.value; i++ )
11098
+ for( let i = 0; i < element.value; i++ )
10813
11099
  {
10814
- var value = element.value[i];
11100
+ let value = element.value[i];
10815
11101
  if(value[0] < v[0]) continue;
10816
11102
  element.value.splice(i,0,v);
10817
11103
  redraw();
@@ -10834,7 +11120,7 @@ class CanvasCurve {
10834
11120
  (v[1] * element.yrange[1] / canvas.height + element.yrange[0])];
10835
11121
  }
10836
11122
 
10837
- var selected = -1;
11123
+ let selected = -1;
10838
11124
 
10839
11125
  element.redraw = function( o = {} ) {
10840
11126
 
@@ -10896,7 +11182,7 @@ class CanvasCurve {
10896
11182
  var value = element.value[ i ];
10897
11183
  pos = convert( value );
10898
11184
  if( selected == i )
10899
- ctx.fillStyle = "white";
11185
+ ctx.fillStyle = element.activepointscolor;
10900
11186
  else
10901
11187
  ctx.fillStyle = element.pointscolor;
10902
11188
  ctx.beginPath();
@@ -12084,7 +12370,7 @@ class AssetView {
12084
12370
  const hasImage = ['png', 'jpg'].indexOf( getExtension( file.src ) ) > -1 || is_base_64;
12085
12371
  if( hasImage )
12086
12372
  {
12087
- this.previewPanel.addImage( file.src, { style: { width: "100%" } } );
12373
+ this.previewPanel.addImage( null, file.src, { style: { width: "100%" } } );
12088
12374
  }
12089
12375
  }
12090
12376
 
@@ -12528,69 +12814,6 @@ Element.prototype.getParentArea = function() {
12528
12814
  }
12529
12815
  }
12530
12816
 
12531
- LX.ICONS = {
12532
- "align-center": [448, 512, [], "", "M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z"],
12533
- "align-justify": [448, 512, [], "", "M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"],
12534
- "align-left": [448, 512, [], "", "M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12535
- "align-right": [448, 512, [], "", "M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12536
- "bell": [448, 512, [], "", "M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416l400 0c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4l0-25.4c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112l0 25.4c0 47.9 13.9 94.6 39.7 134.6L72.3 368C98.1 328 112 281.3 112 233.4l0-25.4c0-61.9 50.1-112 112-112zm64 352l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
12537
- "display": [576, 512, [], "", "M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z"],
12538
- "mobile-screen": [384, 512, [], "", "M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z"],
12539
- "print": [512, 512, [], "", "M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
12540
- "bookmark": [384, 512, [], "", "M0 48C0 21.5 21.5 0 48 0l0 48 0 393.4 130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4 336 48 48 48 48 0 336 0c26.5 0 48 21.5 48 48l0 440c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488L0 48z"],
12541
- "calendar": [448, 512, [], "", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z"],
12542
- "chart": [448, 512, [], "", "M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z"],
12543
- "check": [448, 512, [], "", "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"],
12544
- "clone": [512, 512, [], "", "M64 464l224 0c8.8 0 16-7.2 16-16l0-64 48 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 0 48-64 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zM224 304l224 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16L224 48c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zm-64-16l0-224c0-35.3 28.7-64 64-64L448 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-224 0c-35.3 0-64-28.7-64-64z"],
12545
- "copy": [448, 512, [], "", "M384 336l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L400 115.9 400 320c0 8.8-7.2 16-16 16zM192 384l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1L192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-32-48 0 0 32c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l32 0 0-48-32 0z"],
12546
- "paste": [512, 512, [], "", "M104.6 48L64 48C28.7 48 0 76.7 0 112L0 384c0 35.3 28.7 64 64 64l96 0 0-48-96 0c-8.8 0-16-7.2-16-16l0-272c0-8.8 7.2-16 16-16l16 0c0 17.7 14.3 32 32 32l72.4 0C202 108.4 227.6 96 256 96l62 0c-7.1-27.6-32.2-48-62-48l-40.6 0C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L464 243.9 464 448c0 8.8-7.2 16-16 16zM256 512l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L256 128c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64z"],
12547
- "edit": [512, 512, [], "", "M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152L0 424c0 48.6 39.4 88 88 88l272 0c48.6 0 88-39.4 88-88l0-112c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 22.1-17.9 40-40 40L88 464c-22.1 0-40-17.9-40-40l0-272c0-22.1 17.9-40 40-40l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64z"],
12548
- "envelope": [512, 512, [], "", "M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z"],
12549
- "envelope-open": [512, 512, [], "", "M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5l0 13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1l0-13.6c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2 464 456c0 4.4-3.6 8-8 8L56 464c-4.4 0-8-3.6-8-8l0-179.8zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5L0 456c0 30.9 25.1 56 56 56l400 0c30.9 0 56-25.1 56-56l0-255.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z"],
12550
- "map": [576, 512, [], "", "M565.6 36.2C572.1 40.7 576 48.1 576 56l0 336c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456L0 120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5l0 284.6 120-45.7 0-284.6L48 136.5zM360 422.7l0-285.4-144-48 0 285.4 144 48zm48-1.5l120-45.7 0-284.6L408 136.5l0 284.6z"],
12551
- "file": [384, 512, [], "", "M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z"],
12552
- "file-code": [384, 512, [], "", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"],
12553
- "file-zip": [384, 512, [], "", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l48 0c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l48 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm48 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8l-14.8 0c-14.5 0-27.2 9.7-30.9 23.8zM128 336l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],
12554
- "floppy-disk": [448, 512, ["save"], "", "M48 96l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-245.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l245.5 0c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8L320 184c0 13.3-10.7 24-24 24l-192 0c-13.3 0-24-10.7-24-24L80 80 64 80c-8.8 0-16 7.2-16 16zm80-16l0 80 144 0 0-80L128 80zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
12555
- "save": "floppy-disk",
12556
- "fingerprint": [512, 512, [], "", "M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z"],
12557
- "eye": [576, 512, [], "", "M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"],
12558
- "eye-slash": [640, 512, [], "", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z"],
12559
- "folder": [512, 512, [], "", "M0 96C0 60.7 28.7 32 64 32l132.1 0c19.1 0 37.4 7.6 50.9 21.1L289.9 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16l-161.4 0c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7L64 80z"],
12560
- "folder-closed": [512, 512, [], "e185", "M251.7 127.6s0 0 0 0c10.5 10.5 24.7 16.4 39.6 16.4L448 144c8.8 0 16 7.2 16 16l0 32L48 192l0-96c0-8.8 7.2-16 16-16l133.5 0c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240l416 0 0 176c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-176zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L291.3 96c-2.1 0-4.2-.8-5.7-2.3z"],
12561
- "folder-open": [576, 512, [], "", "M384 480l48 0c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224l-400 0c-11.4 0-21.9 6-27.6 15.9L48 357.1 48 96c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8L416 144c8.8 0 16 7.2 16 16l0 32 48 0 0-32c0-35.3-28.7-64-64-64L298.5 96c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l23.7 0L384 480z"],
12562
- "github": [496, 512, [], "", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
12563
- "grip-vertical": [320, 512, [], "", "M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z"],
12564
- "image": [512, 512, [], "", "M448 80c8.8 0 16 7.2 16 16l0 319.8-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3L48 96c0-8.8 7.2-16 16-16l384 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],
12565
- "images": [576, 512, [], "", "M160 80l352 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-21.2 0L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336 160 336c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16zM96 96l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
12566
- "left": [320, 512, [], "", "M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],
12567
- "right": [320, 512, [], "", "M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"],
12568
- "up": [448, 512, [], "", "M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"],
12569
- "down": [448, 512, [], "", "M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],
12570
- "log-in": [512, 512, [], "", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],
12571
- "log-out": [512, 512, [], "", "M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z"],
12572
- "menu-arrows": [512, 512, [], "", "M352 144l96 112-96 112M160 144L64 256l96 112", "transform=rotate(90)", "fill=none stroke=currentColor stroke-width=60 stroke-linejoin=round stroke-linecap=round"],
12573
- "more": [128, 512, [], "", "M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"],
12574
- "minus": [448, 512, [], "", "M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"],
12575
- "more-horizontal": [448, 512, [], "", "M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"],
12576
- "plus": [448, 512, [], "", "M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z"],
12577
- "search": [512, 512, [], "", "M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"],
12578
- "sidebar": [512, 512, [], "", "M64 64h384a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm128 0v384", null, "fill=none stroke=currentColor stroke-width=50 stroke-linejoin=round stroke-linecap=round"],
12579
- "shuffle": [512, 512, [], "", "M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z"],
12580
- "credit-card": [576, 512, [], "", "M512 80c8.8 0 16 7.2 16 16l0 32L48 128l0-32c0-8.8 7.2-16 16-16l448 0zm16 144l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192 480 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z"],
12581
- "trash-can": [448, 512, [], "", "M170.5 51.6L151.5 80l145 0-19-28.4c-1.5-2.2-4-3.6-6.7-3.6l-93.7 0c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80 368 80l48 0 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 304c0 44.2-35.8 80-80 80l-224 0c-44.2 0-80-35.8-80-80l0-304-8 0c-13.3 0-24-10.7-24-24S10.7 80 24 80l8 0 48 0 13.8 0 36.7-55.1C140.9 9.4 158.4 0 177.1 0l93.7 0c18.7 0 36.2 9.4 46.6 24.9zM80 128l0 304c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-304L80 128zm80 64l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16z"],
12582
- "user": [448, 512, [], "", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z"],
12583
- "closed-captioning": [576, 512, ["cc"], "", "M512 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l448 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],
12584
- "cc": "closed-captioning",
12585
- "heart": [512, 512, [], "", "M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8l0-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5l0 3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20-.1-.1s0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5l0 3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2l0-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z"],
12586
- "x-mark": [384, 512, [], "", "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"],
12587
- "star": [576, 512, [], "", "M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"],
12588
- "square-js": [448, 512, [], "", "M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM180.9 444.9c-33.7 0-53.2-17.4-63.2-38.5L152 385.7c6.6 11.7 12.6 21.6 27.1 21.6c13.8 0 22.6-5.4 22.6-26.5V237.7h42.1V381.4c0 43.6-25.6 63.5-62.9 63.5zm85.8-43L301 382.1c9 14.7 20.8 25.6 41.5 25.6c17.4 0 28.6-8.7 28.6-20.8c0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5c0-31.6 24.1-55.6 61.6-55.6c26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18c-12.3 0-20.1 7.8-20.1 18c0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2c0 37.8-29.8 58.6-69.7 58.6c-39.1 0-64.4-18.6-76.7-43z"],
12589
- "python": [448, 512, [], "", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"],
12590
- "microsoft": [448, 512, [], "", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
12591
- "apple": [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],
12592
- }
12593
-
12594
12817
  LX.UTILS = {
12595
12818
  getTime() { return new Date().getTime() },
12596
12819
  compareThreshold( v, p, n, t ) { return Math.abs(v - p) >= t || Math.abs(v - n) >= t },
@@ -12665,4 +12888,130 @@ LX.UTILS = {
12665
12888
  }
12666
12889
  };
12667
12890
 
12891
+ LX.ICONS = {
12892
+ "align-center": [448, 512, [], "solid", "M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z"],
12893
+ "align-justify": [448, 512, [], "solid", "M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"],
12894
+ "align-left": [448, 512, [], "solid", "M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12895
+ "align-right": [448, 512, [], "solid", "M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12896
+ "bell": [448, 512, [], "regular", "M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416l400 0c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4l0-25.4c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112l0 25.4c0 47.9 13.9 94.6 39.7 134.6L72.3 368C98.1 328 112 281.3 112 233.4l0-25.4c0-61.9 50.1-112 112-112zm64 352l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
12897
+ "bell-slash": [640, 512, [], "regular", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4l0-33.4c0-75.8-55.5-138.6-128-150.1L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 17.9c-43.9 7-81.5 32.7-104.4 68.7L38.8 5.1zM221.7 148.4C239.6 117.1 273.3 96 312 96l8 0 8 0c57.4 0 104 46.6 104 104l0 33.4c0 32.7 6.4 64.8 18.7 94.5L221.7 148.4zM406.2 416l-60.9-48-176.9 0c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1l0 11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l286.2 0zM384 448l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
12898
+ "display": [576, 512, [], "solid", "M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z"],
12899
+ "fingerprint": [512, 512, [], "regular", "M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z"],
12900
+ "mobile-screen": [384, 512, [], "solid", "M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z"],
12901
+ "vr-cardboard": [640, 512, ["vr"], "solid", "M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],
12902
+ "gamepad": [640, 512, [], "solid", "M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z"],
12903
+ "keyboard": [576, 512, [], "regular", "M64 112c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16L64 112zM0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM176 320l224 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16z"],
12904
+ "headset": [512, 512, [], "solid", "M256 48C141.1 48 48 141.1 48 256l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40C0 114.6 114.6 0 256 0S512 114.6 512 256l0 144.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24l-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40L464 256c0-114.9-93.1-208-208-208zM144 208l16 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-48c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64l0 48c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-112c0-17.7 14.3-32 32-32l16 0z"],
12905
+ "camera": [512, 512, [], "solid", "M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L362.9 64.8C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],
12906
+ "print": [512, 512, [], "solid", "M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
12907
+ "bookmark": [384, 512, [], "regular", "M0 48C0 21.5 21.5 0 48 0l0 48 0 393.4 130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4 336 48 48 48 48 0 336 0c26.5 0 48 21.5 48 48l0 440c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488L0 48z"],
12908
+ "calendar": [448, 512, [], "regular", "M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l352 0 0 256c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256z"],
12909
+ "chart": [448, 512, [], "solid", "M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z"],
12910
+ "check": [448, 512, [], "solid", "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"],
12911
+ "clone": [512, 512, [], "regular", "M64 464l224 0c8.8 0 16-7.2 16-16l0-64 48 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 0 48-64 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zM224 304l224 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16L224 48c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zm-64-16l0-224c0-35.3 28.7-64 64-64L448 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-224 0c-35.3 0-64-28.7-64-64z"],
12912
+ "copy": [448, 512, [], "regular", "M384 336l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L400 115.9 400 320c0 8.8-7.2 16-16 16zM192 384l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1L192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-32-48 0 0 32c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l32 0 0-48-32 0z"],
12913
+ "paste": [512, 512, [], "regular", "M104.6 48L64 48C28.7 48 0 76.7 0 112L0 384c0 35.3 28.7 64 64 64l96 0 0-48-96 0c-8.8 0-16-7.2-16-16l0-272c0-8.8 7.2-16 16-16l16 0c0 17.7 14.3 32 32 32l72.4 0C202 108.4 227.6 96 256 96l62 0c-7.1-27.6-32.2-48-62-48l-40.6 0C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L464 243.9 464 448c0 8.8-7.2 16-16 16zM256 512l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L256 128c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64z"],
12914
+ "edit": [512, 512, [], "regular", "M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152L0 424c0 48.6 39.4 88 88 88l272 0c48.6 0 88-39.4 88-88l0-112c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 22.1-17.9 40-40 40L88 464c-22.1 0-40-17.9-40-40l0-272c0-22.1 17.9-40 40-40l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64z"],
12915
+ "envelope": [512, 512, [], "regular", "M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z"],
12916
+ "envelope-open": [512, 512, [], "regular", "M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5l0 13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1l0-13.6c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2 464 456c0 4.4-3.6 8-8 8L56 464c-4.4 0-8-3.6-8-8l0-179.8zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5L0 456c0 30.9 25.1 56 56 56l400 0c30.9 0 56-25.1 56-56l0-255.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z"],
12917
+ "map": [576, 512, [], "regular", "M565.6 36.2C572.1 40.7 576 48.1 576 56l0 336c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456L0 120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5l0 284.6 120-45.7 0-284.6L48 136.5zM360 422.7l0-285.4-144-48 0 285.4 144 48zm48-1.5l120-45.7 0-284.6L408 136.5l0 284.6z"],
12918
+ "note-sticky": [448, 512, ["sticky-note"], "regular", "M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l224 0 0-80c0-17.7 14.3-32 32-32l80 0 0-224c0-8.8-7.2-16-16-16L64 80zM288 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 224 0 5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7l-5.5 0z"],
12919
+ "file": [384, 512, [], "regular", "M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z"],
12920
+ "file-video": [384, 512, [], "regular", "M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM80 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 16 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96z"],
12921
+ "file-code": [384, 512, [], "regular", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"],
12922
+ "file-zip": [384, 512, [], "regular", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l48 0c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l48 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm48 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8l-14.8 0c-14.5 0-27.2 9.7-30.9 23.8zM128 336l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],
12923
+ "file-pdf": [512, 512, [], "regular", "M64 464l48 0 0 48-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 304l-48 0 0-144-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z"],
12924
+ "scroll": [576, 512, ["script"], "solid", "M0 80l0 48c0 17.7 14.3 32 32 32l16 0 48 0 0-80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48l0 304c0 35.3 28.7 64 64 64s64-28.7 64-64l0-5.3c0-32.4 26.3-58.7 58.7-58.7L480 320l0-192c0-53-43-96-96-96L112 32zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16l-245.3 0c-14.7 0-26.7 11.9-26.7 26.7l0 5.3c0 53-43 96-96 96l176 0 96 0z"],
12925
+ "floppy-disk": [448, 512, ["save"], "regular", "M48 96l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-245.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l245.5 0c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8L320 184c0 13.3-10.7 24-24 24l-192 0c-13.3 0-24-10.7-24-24L80 80 64 80c-8.8 0-16 7.2-16 16zm80-16l0 80 144 0 0-80L128 80zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
12926
+ "download": [512, 512, [], "solid", "M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
12927
+ "upload": [512, 512, [], "solid", "M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],
12928
+ "gear": [512, 512, [], "solid", "M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"],
12929
+ "gears": [640, 512, [], "solid", "M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],
12930
+ "sliders": [512, 512, [], "solid", "M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"],
12931
+ "eye": [576, 512, [], "regular", "M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"],
12932
+ "eye-slash": [640, 512, [], "regular", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z"],
12933
+ "comment": [512, 512, [], "regular", "M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9l.3-.5z"],
12934
+ "message": [512, 512, [], "regular", "M160 368c26.5 0 48 21.5 48 48l0 16 72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6L448 368c8.8 0 16-7.2 16-16l0-288c0-8.8-7.2-16-16-16L64 48c-8.8 0-16 7.2-16 16l0 288c0 8.8 7.2 16 16 16l96 0zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3l0-21.3 0-6.4 0-.3 0-4 0-48-48 0-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L448 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-138.7 0L208 492z"],
12935
+ "folder": [512, 512, [], "regular", "M0 96C0 60.7 28.7 32 64 32l132.1 0c19.1 0 37.4 7.6 50.9 21.1L289.9 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16l-161.4 0c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7L64 80z"],
12936
+ "folder-closed": [512, 512, [], "regular", "M251.7 127.6s0 0 0 0c10.5 10.5 24.7 16.4 39.6 16.4L448 144c8.8 0 16 7.2 16 16l0 32L48 192l0-96c0-8.8 7.2-16 16-16l133.5 0c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240l416 0 0 176c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-176zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L291.3 96c-2.1 0-4.2-.8-5.7-2.3z"],
12937
+ "folder-open": [576, 512, [], "regular", "M384 480l48 0c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224l-400 0c-11.4 0-21.9 6-27.6 15.9L48 357.1 48 96c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8L416 144c8.8 0 16 7.2 16 16l0 32 48 0 0-32c0-35.3-28.7-64-64-64L298.5 96c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l23.7 0L384 480z"],
12938
+ "grip-vertical": [320, 512, [], "solid", "M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z"],
12939
+ "image": [512, 512, [], "regular", "M448 80c8.8 0 16 7.2 16 16l0 319.8-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3L48 96c0-8.8 7.2-16 16-16l384 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],
12940
+ "images": [576, 512, [], "regular", "M160 80l352 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-21.2 0L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336 160 336c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16zM96 96l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
12941
+ "photo-film": [640, 512, ["media"], "solid", "M256 0L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l80 0 48 0 144 0c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128l96 0 0 256 0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32 160 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm336 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z"],
12942
+ "left": [320, 512, [], "solid", "M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],
12943
+ "right": [320, 512, [], "solid", "M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"],
12944
+ "up": [448, 512, [], "solid", "M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"],
12945
+ "down": [448, 512, [], "solid", "M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],
12946
+ "arrows": [512, 512, ["arrows-up-down-left-right"], "solid", "M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4L224 224l-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L224 288l0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4L288 288l114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L288 224l0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z"],
12947
+ "rotate": [512, 512, [], "solid", "M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z"],
12948
+ "rotate-right": [512, 512, ["rotate-forward"], "solid", "M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z"],
12949
+ "rotate-left": [512, 512, ["rotate-back"], "solid", "M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z"],
12950
+ "arrow-pointer": [320, 512, [], "solid", "M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z"],
12951
+ "hand-pointer": [448, 512, [], "regular", "M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 136c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16 0 104c0 39.8-32.2 72-72 72l-56 0-59.8 0-.9 0c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23l0-19.9 0-256zM176 0c-35.3 0-64 28.7-64 64l0 197.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2l.9 0 59.8 0 56 0c66.3 0 120-53.7 120-120l0-104 0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5L240 64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z"],
12952
+ "log-in": [512, 512, [], "solid", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],
12953
+ "log-out": [512, 512, [], "solid", "M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z"],
12954
+ "menu-arrows": [512, 512, [], "solid", "M352 144l96 112-96 112M160 144L64 256l96 112", "transform=rotate(90)", "fill=none stroke=currentColor stroke-width=60 stroke-linejoin=round stroke-linecap=round"],
12955
+ "more": [128, 512, [], "solid", "M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"],
12956
+ "minus": [448, 512, [], "solid", "M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"],
12957
+ "more-horizontal": [448, 512, [], "solid", "M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"],
12958
+ "plus": [448, 512, [], "solid", "M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z"],
12959
+ "circle-plus": [24, 24, [], "regular", "M12 8V16M8 12H16M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z", null, "fill=none stroke-width=2 stroke-linecap=round stroke-linejoin=round"],
12960
+ "search": [512, 512, [], "solid", "M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"],
12961
+ "compass": [512, 512, [], "regular", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
12962
+ "sidebar": [512, 512, [], "regular", "M64 64h384a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm128 0v384", null, "fill=none stroke=currentColor stroke-width=50 stroke-linejoin=round stroke-linecap=round"],
12963
+ "table-cells": [512, 512, [], "solid", "M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z"],
12964
+ "table-cells-large": [512, 512, [], "solid", "M448 96l0 128-160 0 0-128 160 0zm0 192l0 128-160 0 0-128 160 0zM224 224L64 224 64 96l160 0 0 128zM64 288l160 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z"],
12965
+ "lightbulb": [384, 512, [], "regular", "M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7c0 0 0 0 0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5L109 384c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8c0 0 0 0 0 0s0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4c0 0 0 0 0 0s0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5l-48.6 0c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80l0-16 160 0 0 16c0 44.2-35.8 80-80 80z"],
12966
+ "flag": [448, 512, [], "regular", "M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24L0 64 0 350.5 0 400l0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-100 80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-279.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52l0-28zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8l0 241.8-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5l0-237z"],
12967
+ "shuffle": [512, 512, [], "solid", "M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z"],
12968
+ "credit-card": [576, 512, [], "regular", "M512 80c8.8 0 16 7.2 16 16l0 32L48 128l0-32c0-8.8 7.2-16 16-16l448 0zm16 144l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192 480 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z"],
12969
+ "lock": [448, 512, [], "solid", "M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z"],
12970
+ "lock-open": [576, 512, [], "solid", "M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z"],
12971
+ "trash-can": [448, 512, [], "regular", "M170.5 51.6L151.5 80l145 0-19-28.4c-1.5-2.2-4-3.6-6.7-3.6l-93.7 0c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80 368 80l48 0 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 304c0 44.2-35.8 80-80 80l-224 0c-44.2 0-80-35.8-80-80l0-304-8 0c-13.3 0-24-10.7-24-24S10.7 80 24 80l8 0 48 0 13.8 0 36.7-55.1C140.9 9.4 158.4 0 177.1 0l93.7 0c18.7 0 36.2 9.4 46.6 24.9zM80 128l0 304c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-304L80 128zm80 64l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16z"],
12972
+ "user": [448, 512, [], "regular", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z"],
12973
+ "street-view": [512, 512, [], "solid", "M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z"],
12974
+ "closed-captioning": [576, 512, ["cc"], "regular", "M512 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l448 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],
12975
+ "bone": [576, 512, [], "solid", "M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z"],
12976
+ "hands-asl-interpreting": [640, 512, ["asl"], "solid", "M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l72 0 8 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-72 0-8 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z"],
12977
+ "sun": [512, 512, [], "regular", "M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
12978
+ "moon": [384, 512, [], "regular", "M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0l-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z"],
12979
+ "heart": [512, 512, [], "regular", "M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8l0-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5l0 3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20-.1-.1s0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5l0 3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2l0-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z"],
12980
+ "xmark": [384, 512, [], "solid", "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"],
12981
+ "wand-sparkles": [512, 512, [], "solid", "M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z"],
12982
+ "star": [576, 512, [], "regular", "M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"],
12983
+ "puzzle-piece": [512, 512, [], "solid", "M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z"],
12984
+ // brands
12985
+ "discord": [640, 512, [], "brands", "M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"],
12986
+ "github": [496, 512, [], "brands", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
12987
+ "square-js": [448, 512, [], "brands", "M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM180.9 444.9c-33.7 0-53.2-17.4-63.2-38.5L152 385.7c6.6 11.7 12.6 21.6 27.1 21.6c13.8 0 22.6-5.4 22.6-26.5V237.7h42.1V381.4c0 43.6-25.6 63.5-62.9 63.5zm85.8-43L301 382.1c9 14.7 20.8 25.6 41.5 25.6c17.4 0 28.6-8.7 28.6-20.8c0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5c0-31.6 24.1-55.6 61.6-55.6c26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18c-12.3 0-20.1 7.8-20.1 18c0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2c0 37.8-29.8 58.6-69.7 58.6c-39.1 0-64.4-18.6-76.7-43z"],
12988
+ "python": [448, 512, [], "brands", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"],
12989
+ "microsoft": [448, 512, [], "brands", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
12990
+ "apple": [384, 512, [], "brands", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],
12991
+ "youtube": [576, 512, [], "brands", "M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"],
12992
+ "x-twitter": [512, 512, [], "brands", "M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"],
12993
+ "chrome": [512, 512, [], "brands", "M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z"],
12994
+ "reddit": [512, 512, [], "brands", "M0 256C0 114.6 114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256L37.1 512c-13.7 0-20.5-16.5-10.9-26.2L75 437C28.7 390.7 0 326.7 0 256zM349.6 153.6c23.6 0 42.7-19.1 42.7-42.7s-19.1-42.7-42.7-42.7c-20.6 0-37.8 14.6-41.8 34c-34.5 3.7-61.4 33-61.4 68.4l0 .2c-37.5 1.6-71.8 12.3-99 29.1c-10.1-7.8-22.8-12.5-36.5-12.5c-33 0-59.8 26.8-59.8 59.8c0 24 14.1 44.6 34.4 54.1c2 69.4 77.6 125.2 170.6 125.2s168.7-55.9 170.6-125.3c20.2-9.6 34.1-30.2 34.1-54c0-33-26.8-59.8-59.8-59.8c-13.7 0-26.3 4.6-36.4 12.4c-27.4-17-62.1-27.7-100-29.1l0-.2c0-25.4 18.9-46.5 43.4-49.9l0 0c4.4 18.8 21.3 32.8 41.5 32.8zM177.1 246.9c16.7 0 29.5 17.6 28.5 39.3s-13.5 29.6-30.3 29.6s-31.4-8.8-30.4-30.5s15.4-38.3 32.1-38.3zm190.1 38.3c1 21.7-13.7 30.5-30.4 30.5s-29.3-7.9-30.3-29.6c-1-21.7 11.8-39.3 28.5-39.3s31.2 16.6 32.1 38.3zm-48.1 56.7c-10.3 24.6-34.6 41.9-63 41.9s-52.7-17.3-63-41.9c-1.2-2.9 .8-6.2 3.9-6.5c18.4-1.9 38.3-2.9 59.1-2.9s40.7 1 59.1 2.9c3.1 .3 5.1 3.6 3.9 6.5z"],
12995
+ "ubuntu": [576, 512, [], "brands", "M469.2 75A75.6 75.6 0 1 0 317.9 75a75.6 75.6 0 1 0 151.2 0zM154.2 240.7A75.6 75.6 0 1 0 3 240.7a75.6 75.6 0 1 0 151.2 0zM57 346C75.6 392.9 108 433 150 461.1s91.5 42.6 142 41.7c-14.7-18.6-22.9-41.5-23.2-65.2c-6.8-.9-13.3-2.1-19.5-3.4c-26.8-5.7-51.9-17.3-73.6-34s-39.3-38.1-51.7-62.5c-20.9 9.9-44.5 12.8-67.1 8.2zm395.1 89.8a75.6 75.6 0 1 0 -151.2 0 75.6 75.6 0 1 0 151.2 0zM444 351.6c18.5 14.8 31.6 35.2 37.2 58.2c33.3-41.3 52.6-92.2 54.8-145.2s-12.5-105.4-42.2-149.4c-8.6 21.5-24 39.6-43.8 51.6c15.4 28.6 22.9 60.8 21.9 93.2s-10.7 64-28 91.6zM101.1 135.4c12.4 2.7 24.3 7.5 35.1 14.3c16.6-24.2 38.9-44.1 64.8-58S255.8 70.4 285.2 70c.2-5.9 .9-11.9 2-17.7c3.6-16.7 11.1-32.3 21.8-45.5c-47.7-3.8-95.4 6-137.6 28.5S94.3 91.7 70.8 133.4c2.7-.2 5.3-.3 8-.3c7.5 0 15 .8 22.4 2.3z"],
12996
+ "whatsapp": [448, 512, [], "brands", "M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"],
12997
+ "linux": [448, 512, [], "brands", "M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"],
12998
+ "instagram": [448, 512, [], "brands", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],
12999
+ "facebook": [512, 512, [], "brands", "M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"],
13000
+ "safari": [512, 512, [], "brands", "M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"],
13001
+ "google": [488, 512, [], "brands", "M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"],
13002
+ "npm": [576, 512, [], "brands", "M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"],
13003
+ "bluetooth-b": [320, 512, [], "brands", "M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"],
13004
+ // Some Aliases
13005
+ "vr": "vr-cardboard",
13006
+ "sticky-note": "note-sticky",
13007
+ "script": "scroll",
13008
+ "save": "floppy-disk",
13009
+ "media": "photo-film",
13010
+ "arrows-up-down-left-right": "arrows",
13011
+ "rotate-forward": "rotate-right",
13012
+ "rotate-back": "rotate-left",
13013
+ "cc": "closed-captioning",
13014
+ "asl": "hands-asl-interpreting",
13015
+ }
13016
+
12668
13017
  })( typeof(window) != 'undefined' ? window : (typeof(self) != 'undefined' ? self : global ) );