dash-button-web 0.0.22 → 0.0.23-beta.1

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.
Files changed (72) hide show
  1. package/dist/cjs/app-globals-cd54EKuF.js +15 -0
  2. package/dist/cjs/dash-button.cjs.entry.js +2172 -2070
  3. package/dist/cjs/index-BfwSK14n.js +1507 -0
  4. package/dist/cjs/index.cjs.js +0 -2
  5. package/dist/cjs/loader.cjs.js +5 -7
  6. package/dist/cjs/web-compnont.cjs.js +15 -15
  7. package/dist/collection/collection-manifest.json +5 -3
  8. package/dist/collection/components/my-component/dash-button.js +135 -38
  9. package/dist/collection/global/app.js +7 -0
  10. package/dist/collection/index.js +0 -1
  11. package/dist/collection/services/config.js +2 -1
  12. package/dist/collection/services/menu.js +0 -1
  13. package/dist/components/dash-button.js +1 -4247
  14. package/dist/components/index.d.ts +2 -0
  15. package/dist/components/index.js +1 -3
  16. package/dist/esm/app-globals-B2hgy9FG.js +13 -0
  17. package/dist/esm/dash-button.entry.js +2172 -2068
  18. package/dist/esm/index-6_Ga3Eox.js +1499 -0
  19. package/dist/esm/index.js +0 -2
  20. package/dist/esm/loader.js +6 -6
  21. package/dist/esm/web-compnont.js +15 -14
  22. package/dist/types/components/my-component/dash-button.d.ts +3 -0
  23. package/dist/types/components.d.ts +75 -3
  24. package/dist/types/global/app.d.ts +2 -0
  25. package/dist/types/services/config.d.ts +2 -0
  26. package/dist/types/stencil-public-runtime.d.ts +268 -70
  27. package/dist/web-compnont/index.esm.js +0 -2
  28. package/dist/web-compnont/p-6_Ga3Eox.js +3 -0
  29. package/dist/web-compnont/p-7de50cbc.entry.js +1 -0
  30. package/dist/web-compnont/p-DiU1T8CW.js +1 -0
  31. package/dist/web-compnont/web-compnont.esm.js +1 -2
  32. package/loader/cdn.js +1 -3
  33. package/loader/index.cjs.js +1 -3
  34. package/loader/index.d.ts +4 -1
  35. package/loader/index.es2017.js +1 -3
  36. package/loader/index.js +1 -3
  37. package/package.json +3 -2
  38. package/readme.md +21 -0
  39. package/dist/cjs/dash-button.cjs.entry.js.map +0 -1
  40. package/dist/cjs/index-87d4993d.js +0 -1793
  41. package/dist/cjs/index-87d4993d.js.map +0 -1
  42. package/dist/cjs/index.cjs.js.map +0 -1
  43. package/dist/cjs/loader.cjs.js.map +0 -1
  44. package/dist/cjs/web-compnont.cjs.js.map +0 -1
  45. package/dist/collection/components/my-component/dash-button.e2e.js +0 -26
  46. package/dist/collection/components/my-component/dash-button.e2e.js.map +0 -1
  47. package/dist/collection/components/my-component/dash-button.js.map +0 -1
  48. package/dist/collection/components/my-component/dash-button.spec.js +0 -35
  49. package/dist/collection/components/my-component/dash-button.spec.js.map +0 -1
  50. package/dist/collection/index.js.map +0 -1
  51. package/dist/collection/services/config.js.map +0 -1
  52. package/dist/collection/services/menu.js.map +0 -1
  53. package/dist/components/dash-button.js.map +0 -1
  54. package/dist/components/index.js.map +0 -1
  55. package/dist/esm/dash-button.entry.js.map +0 -1
  56. package/dist/esm/index-e3df5eaf.js +0 -1766
  57. package/dist/esm/index-e3df5eaf.js.map +0 -1
  58. package/dist/esm/index.js.map +0 -1
  59. package/dist/esm/loader.js.map +0 -1
  60. package/dist/esm/polyfills/core-js.js +0 -11
  61. package/dist/esm/polyfills/dom.js +0 -79
  62. package/dist/esm/polyfills/es5-html-element.js +0 -1
  63. package/dist/esm/polyfills/index.js +0 -34
  64. package/dist/esm/polyfills/system.js +0 -6
  65. package/dist/esm/web-compnont.js.map +0 -1
  66. package/dist/web-compnont/index.esm.js.map +0 -1
  67. package/dist/web-compnont/p-ad318f06.entry.js +0 -10
  68. package/dist/web-compnont/p-ad318f06.entry.js.map +0 -1
  69. package/dist/web-compnont/p-c1ec12fe.js +0 -3
  70. package/dist/web-compnont/p-c1ec12fe.js.map +0 -1
  71. package/dist/web-compnont/web-compnont.esm.js.map +0 -1
  72. package/loader/package.json +0 -11
@@ -1,10 +1,24 @@
1
- import { r as registerInstance, h, g as getElement } from './index-e3df5eaf.js';
1
+ import { r as registerInstance, h, g as getElement } from './index-6_Ga3Eox.js';
2
2
 
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
 
5
+ function getDefaultExportFromCjs (x) {
6
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
7
+ }
8
+
5
9
  function getAugmentedNamespace(n) {
6
- if (n.__esModule) return n;
7
- var a = Object.defineProperty({}, '__esModule', {value: true});
10
+ if (n.__esModule) return n;
11
+ var f = n.default;
12
+ if (typeof f == "function") {
13
+ var a = function a () {
14
+ if (this instanceof a) {
15
+ return Reflect.construct(f, arguments, this.constructor);
16
+ }
17
+ return f.apply(this, arguments);
18
+ };
19
+ a.prototype = f.prototype;
20
+ } else a = {};
21
+ Object.defineProperty(a, '__esModule', {value: true});
8
22
  Object.keys(n).forEach(function (k) {
9
23
  var d = Object.getOwnPropertyDescriptor(n, k);
10
24
  Object.defineProperty(a, k, d.get ? d : {
@@ -19,165 +33,176 @@ function getAugmentedNamespace(n) {
19
33
 
20
34
  var base64Js = {};
21
35
 
22
- base64Js.byteLength = byteLength;
23
- base64Js.toByteArray = toByteArray;
24
- base64Js.fromByteArray = fromByteArray;
25
-
26
- var lookup = [];
27
- var revLookup = [];
28
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
29
-
30
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
31
- for (var i = 0, len = code.length; i < len; ++i) {
32
- lookup[i] = code[i];
33
- revLookup[code.charCodeAt(i)] = i;
34
- }
35
-
36
- // Support decoding URL-safe base64 strings, as Node.js does.
37
- // See: https://en.wikipedia.org/wiki/Base64#URL_applications
38
- revLookup['-'.charCodeAt(0)] = 62;
39
- revLookup['_'.charCodeAt(0)] = 63;
40
-
41
- function getLens (b64) {
42
- var len = b64.length;
43
-
44
- if (len % 4 > 0) {
45
- throw new Error('Invalid string. Length must be a multiple of 4')
46
- }
47
-
48
- // Trim off extra bytes after placeholder bytes are found
49
- // See: https://github.com/beatgammit/base64-js/issues/42
50
- var validLen = b64.indexOf('=');
51
- if (validLen === -1) validLen = len;
52
-
53
- var placeHoldersLen = validLen === len
54
- ? 0
55
- : 4 - (validLen % 4);
56
-
57
- return [validLen, placeHoldersLen]
58
- }
59
-
60
- // base64 is 4/3 + up to two characters of the original data
61
- function byteLength (b64) {
62
- var lens = getLens(b64);
63
- var validLen = lens[0];
64
- var placeHoldersLen = lens[1];
65
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
66
- }
67
-
68
- function _byteLength (b64, validLen, placeHoldersLen) {
69
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
36
+ var hasRequiredBase64Js;
37
+
38
+ function requireBase64Js () {
39
+ if (hasRequiredBase64Js) return base64Js;
40
+ hasRequiredBase64Js = 1;
41
+
42
+ base64Js.byteLength = byteLength;
43
+ base64Js.toByteArray = toByteArray;
44
+ base64Js.fromByteArray = fromByteArray;
45
+
46
+ var lookup = [];
47
+ var revLookup = [];
48
+ var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
49
+
50
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
51
+ for (var i = 0, len = code.length; i < len; ++i) {
52
+ lookup[i] = code[i];
53
+ revLookup[code.charCodeAt(i)] = i;
54
+ }
55
+
56
+ // Support decoding URL-safe base64 strings, as Node.js does.
57
+ // See: https://en.wikipedia.org/wiki/Base64#URL_applications
58
+ revLookup['-'.charCodeAt(0)] = 62;
59
+ revLookup['_'.charCodeAt(0)] = 63;
60
+
61
+ function getLens (b64) {
62
+ var len = b64.length;
63
+
64
+ if (len % 4 > 0) {
65
+ throw new Error('Invalid string. Length must be a multiple of 4')
66
+ }
67
+
68
+ // Trim off extra bytes after placeholder bytes are found
69
+ // See: https://github.com/beatgammit/base64-js/issues/42
70
+ var validLen = b64.indexOf('=');
71
+ if (validLen === -1) validLen = len;
72
+
73
+ var placeHoldersLen = validLen === len
74
+ ? 0
75
+ : 4 - (validLen % 4);
76
+
77
+ return [validLen, placeHoldersLen]
78
+ }
79
+
80
+ // base64 is 4/3 + up to two characters of the original data
81
+ function byteLength (b64) {
82
+ var lens = getLens(b64);
83
+ var validLen = lens[0];
84
+ var placeHoldersLen = lens[1];
85
+ return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
86
+ }
87
+
88
+ function _byteLength (b64, validLen, placeHoldersLen) {
89
+ return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
90
+ }
91
+
92
+ function toByteArray (b64) {
93
+ var tmp;
94
+ var lens = getLens(b64);
95
+ var validLen = lens[0];
96
+ var placeHoldersLen = lens[1];
97
+
98
+ var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
99
+
100
+ var curByte = 0;
101
+
102
+ // if there are placeholders, only get up to the last complete 4 chars
103
+ var len = placeHoldersLen > 0
104
+ ? validLen - 4
105
+ : validLen;
106
+
107
+ var i;
108
+ for (i = 0; i < len; i += 4) {
109
+ tmp =
110
+ (revLookup[b64.charCodeAt(i)] << 18) |
111
+ (revLookup[b64.charCodeAt(i + 1)] << 12) |
112
+ (revLookup[b64.charCodeAt(i + 2)] << 6) |
113
+ revLookup[b64.charCodeAt(i + 3)];
114
+ arr[curByte++] = (tmp >> 16) & 0xFF;
115
+ arr[curByte++] = (tmp >> 8) & 0xFF;
116
+ arr[curByte++] = tmp & 0xFF;
117
+ }
118
+
119
+ if (placeHoldersLen === 2) {
120
+ tmp =
121
+ (revLookup[b64.charCodeAt(i)] << 2) |
122
+ (revLookup[b64.charCodeAt(i + 1)] >> 4);
123
+ arr[curByte++] = tmp & 0xFF;
124
+ }
125
+
126
+ if (placeHoldersLen === 1) {
127
+ tmp =
128
+ (revLookup[b64.charCodeAt(i)] << 10) |
129
+ (revLookup[b64.charCodeAt(i + 1)] << 4) |
130
+ (revLookup[b64.charCodeAt(i + 2)] >> 2);
131
+ arr[curByte++] = (tmp >> 8) & 0xFF;
132
+ arr[curByte++] = tmp & 0xFF;
133
+ }
134
+
135
+ return arr
136
+ }
137
+
138
+ function tripletToBase64 (num) {
139
+ return lookup[num >> 18 & 0x3F] +
140
+ lookup[num >> 12 & 0x3F] +
141
+ lookup[num >> 6 & 0x3F] +
142
+ lookup[num & 0x3F]
143
+ }
144
+
145
+ function encodeChunk (uint8, start, end) {
146
+ var tmp;
147
+ var output = [];
148
+ for (var i = start; i < end; i += 3) {
149
+ tmp =
150
+ ((uint8[i] << 16) & 0xFF0000) +
151
+ ((uint8[i + 1] << 8) & 0xFF00) +
152
+ (uint8[i + 2] & 0xFF);
153
+ output.push(tripletToBase64(tmp));
154
+ }
155
+ return output.join('')
156
+ }
157
+
158
+ function fromByteArray (uint8) {
159
+ var tmp;
160
+ var len = uint8.length;
161
+ var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
162
+ var parts = [];
163
+ var maxChunkLength = 16383; // must be multiple of 3
164
+
165
+ // go through the array every three bytes, we'll deal with trailing stuff later
166
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
167
+ parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
168
+ }
169
+
170
+ // pad the end with zeros, but make sure to not forget the extra bytes
171
+ if (extraBytes === 1) {
172
+ tmp = uint8[len - 1];
173
+ parts.push(
174
+ lookup[tmp >> 2] +
175
+ lookup[(tmp << 4) & 0x3F] +
176
+ '=='
177
+ );
178
+ } else if (extraBytes === 2) {
179
+ tmp = (uint8[len - 2] << 8) + uint8[len - 1];
180
+ parts.push(
181
+ lookup[tmp >> 10] +
182
+ lookup[(tmp >> 4) & 0x3F] +
183
+ lookup[(tmp << 2) & 0x3F] +
184
+ '='
185
+ );
186
+ }
187
+
188
+ return parts.join('')
189
+ }
190
+ return base64Js;
70
191
  }
71
192
 
72
- function toByteArray (b64) {
73
- var tmp;
74
- var lens = getLens(b64);
75
- var validLen = lens[0];
76
- var placeHoldersLen = lens[1];
77
-
78
- var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
79
-
80
- var curByte = 0;
81
-
82
- // if there are placeholders, only get up to the last complete 4 chars
83
- var len = placeHoldersLen > 0
84
- ? validLen - 4
85
- : validLen;
86
-
87
- var i;
88
- for (i = 0; i < len; i += 4) {
89
- tmp =
90
- (revLookup[b64.charCodeAt(i)] << 18) |
91
- (revLookup[b64.charCodeAt(i + 1)] << 12) |
92
- (revLookup[b64.charCodeAt(i + 2)] << 6) |
93
- revLookup[b64.charCodeAt(i + 3)];
94
- arr[curByte++] = (tmp >> 16) & 0xFF;
95
- arr[curByte++] = (tmp >> 8) & 0xFF;
96
- arr[curByte++] = tmp & 0xFF;
97
- }
98
-
99
- if (placeHoldersLen === 2) {
100
- tmp =
101
- (revLookup[b64.charCodeAt(i)] << 2) |
102
- (revLookup[b64.charCodeAt(i + 1)] >> 4);
103
- arr[curByte++] = tmp & 0xFF;
104
- }
105
-
106
- if (placeHoldersLen === 1) {
107
- tmp =
108
- (revLookup[b64.charCodeAt(i)] << 10) |
109
- (revLookup[b64.charCodeAt(i + 1)] << 4) |
110
- (revLookup[b64.charCodeAt(i + 2)] >> 2);
111
- arr[curByte++] = (tmp >> 8) & 0xFF;
112
- arr[curByte++] = tmp & 0xFF;
113
- }
114
-
115
- return arr
116
- }
117
-
118
- function tripletToBase64 (num) {
119
- return lookup[num >> 18 & 0x3F] +
120
- lookup[num >> 12 & 0x3F] +
121
- lookup[num >> 6 & 0x3F] +
122
- lookup[num & 0x3F]
123
- }
124
-
125
- function encodeChunk (uint8, start, end) {
126
- var tmp;
127
- var output = [];
128
- for (var i = start; i < end; i += 3) {
129
- tmp =
130
- ((uint8[i] << 16) & 0xFF0000) +
131
- ((uint8[i + 1] << 8) & 0xFF00) +
132
- (uint8[i + 2] & 0xFF);
133
- output.push(tripletToBase64(tmp));
134
- }
135
- return output.join('')
136
- }
137
-
138
- function fromByteArray (uint8) {
139
- var tmp;
140
- var len = uint8.length;
141
- var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
142
- var parts = [];
143
- var maxChunkLength = 16383; // must be multiple of 3
144
-
145
- // go through the array every three bytes, we'll deal with trailing stuff later
146
- for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
147
- parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
148
- }
149
-
150
- // pad the end with zeros, but make sure to not forget the extra bytes
151
- if (extraBytes === 1) {
152
- tmp = uint8[len - 1];
153
- parts.push(
154
- lookup[tmp >> 2] +
155
- lookup[(tmp << 4) & 0x3F] +
156
- '=='
157
- );
158
- } else if (extraBytes === 2) {
159
- tmp = (uint8[len - 2] << 8) + uint8[len - 1];
160
- parts.push(
161
- lookup[tmp >> 10] +
162
- lookup[(tmp >> 4) & 0x3F] +
163
- lookup[(tmp << 2) & 0x3F] +
164
- '='
165
- );
166
- }
167
-
168
- return parts.join('')
169
- }
193
+ var base64JsExports = requireBase64Js();
194
+ var base64 = /*@__PURE__*/getDefaultExportFromCjs(base64JsExports);
170
195
 
171
196
  var sha256$1 = {exports: {}};
172
197
 
173
- const _nodeResolve_empty = {};
198
+ var _nodeResolve_empty = {};
174
199
 
175
- const _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
200
+ var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
176
201
  __proto__: null,
177
- 'default': _nodeResolve_empty
202
+ default: _nodeResolve_empty
178
203
  });
179
204
 
180
- const require$$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
205
+ var require$$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
181
206
 
182
207
  /**
183
208
  * [js-sha256]{@link https://github.com/emn178/js-sha256}
@@ -188,522 +213,530 @@ const require$$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
188
213
  * @license MIT
189
214
  */
190
215
 
191
- (function (module) {
192
- /*jslint bitwise: true */
193
- (function () {
194
-
195
- var ERROR = 'input is invalid type';
196
- var WINDOW = typeof window === 'object';
197
- var root = WINDOW ? window : {};
198
- if (root.JS_SHA256_NO_WINDOW) {
199
- WINDOW = false;
200
- }
201
- var WEB_WORKER = !WINDOW && typeof self === 'object';
202
- var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
203
- if (NODE_JS) {
204
- root = commonjsGlobal;
205
- } else if (WEB_WORKER) {
206
- root = self;
207
- }
208
- var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && 'object' === 'object' && module.exports;
209
- var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
210
- var HEX_CHARS = '0123456789abcdef'.split('');
211
- var EXTRA = [-2147483648, 8388608, 32768, 128];
212
- var SHIFT = [24, 16, 8, 0];
213
- var K = [
214
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
215
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
216
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
217
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
218
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
219
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
220
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
221
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
222
- ];
223
- var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];
224
-
225
- var blocks = [];
226
-
227
- if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {
228
- Array.isArray = function (obj) {
229
- return Object.prototype.toString.call(obj) === '[object Array]';
230
- };
231
- }
232
-
233
- if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
234
- ArrayBuffer.isView = function (obj) {
235
- return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
236
- };
237
- }
238
-
239
- var createOutputMethod = function (outputType, is224) {
240
- return function (message) {
241
- return new Sha256(is224, true).update(message)[outputType]();
242
- };
243
- };
244
-
245
- var createMethod = function (is224) {
246
- var method = createOutputMethod('hex', is224);
247
- if (NODE_JS) {
248
- method = nodeWrap(method, is224);
249
- }
250
- method.create = function () {
251
- return new Sha256(is224);
252
- };
253
- method.update = function (message) {
254
- return method.create().update(message);
255
- };
256
- for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
257
- var type = OUTPUT_TYPES[i];
258
- method[type] = createOutputMethod(type, is224);
259
- }
260
- return method;
261
- };
262
-
263
- var nodeWrap = function (method, is224) {
264
- var crypto = require$$1;
265
- var Buffer = require$$1.Buffer;
266
- var algorithm = is224 ? 'sha224' : 'sha256';
267
- var bufferFrom;
268
- if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {
269
- bufferFrom = Buffer.from;
270
- } else {
271
- bufferFrom = function (message) {
272
- return new Buffer(message);
273
- };
274
- }
275
- var nodeMethod = function (message) {
276
- if (typeof message === 'string') {
277
- return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');
278
- } else {
279
- if (message === null || message === undefined) {
280
- throw new Error(ERROR);
281
- } else if (message.constructor === ArrayBuffer) {
282
- message = new Uint8Array(message);
283
- }
284
- }
285
- if (Array.isArray(message) || ArrayBuffer.isView(message) ||
286
- message.constructor === Buffer) {
287
- return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');
288
- } else {
289
- return method(message);
290
- }
291
- };
292
- return nodeMethod;
293
- };
294
-
295
- var createHmacOutputMethod = function (outputType, is224) {
296
- return function (key, message) {
297
- return new HmacSha256(key, is224, true).update(message)[outputType]();
298
- };
299
- };
300
-
301
- var createHmacMethod = function (is224) {
302
- var method = createHmacOutputMethod('hex', is224);
303
- method.create = function (key) {
304
- return new HmacSha256(key, is224);
305
- };
306
- method.update = function (key, message) {
307
- return method.create(key).update(message);
308
- };
309
- for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
310
- var type = OUTPUT_TYPES[i];
311
- method[type] = createHmacOutputMethod(type, is224);
312
- }
313
- return method;
314
- };
315
-
316
- function Sha256(is224, sharedMemory) {
317
- if (sharedMemory) {
318
- blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
319
- blocks[4] = blocks[5] = blocks[6] = blocks[7] =
320
- blocks[8] = blocks[9] = blocks[10] = blocks[11] =
321
- blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
322
- this.blocks = blocks;
323
- } else {
324
- this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
325
- }
326
-
327
- if (is224) {
328
- this.h0 = 0xc1059ed8;
329
- this.h1 = 0x367cd507;
330
- this.h2 = 0x3070dd17;
331
- this.h3 = 0xf70e5939;
332
- this.h4 = 0xffc00b31;
333
- this.h5 = 0x68581511;
334
- this.h6 = 0x64f98fa7;
335
- this.h7 = 0xbefa4fa4;
336
- } else { // 256
337
- this.h0 = 0x6a09e667;
338
- this.h1 = 0xbb67ae85;
339
- this.h2 = 0x3c6ef372;
340
- this.h3 = 0xa54ff53a;
341
- this.h4 = 0x510e527f;
342
- this.h5 = 0x9b05688c;
343
- this.h6 = 0x1f83d9ab;
344
- this.h7 = 0x5be0cd19;
345
- }
346
-
347
- this.block = this.start = this.bytes = this.hBytes = 0;
348
- this.finalized = this.hashed = false;
349
- this.first = true;
350
- this.is224 = is224;
351
- }
352
-
353
- Sha256.prototype.update = function (message) {
354
- if (this.finalized) {
355
- return;
356
- }
357
- var notString, type = typeof message;
358
- if (type !== 'string') {
359
- if (type === 'object') {
360
- if (message === null) {
361
- throw new Error(ERROR);
362
- } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
363
- message = new Uint8Array(message);
364
- } else if (!Array.isArray(message)) {
365
- if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
366
- throw new Error(ERROR);
367
- }
368
- }
369
- } else {
370
- throw new Error(ERROR);
371
- }
372
- notString = true;
373
- }
374
- var code, index = 0, i, length = message.length, blocks = this.blocks;
375
-
376
- while (index < length) {
377
- if (this.hashed) {
378
- this.hashed = false;
379
- blocks[0] = this.block;
380
- blocks[16] = blocks[1] = blocks[2] = blocks[3] =
381
- blocks[4] = blocks[5] = blocks[6] = blocks[7] =
382
- blocks[8] = blocks[9] = blocks[10] = blocks[11] =
383
- blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
384
- }
385
-
386
- if (notString) {
387
- for (i = this.start; index < length && i < 64; ++index) {
388
- blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
389
- }
390
- } else {
391
- for (i = this.start; index < length && i < 64; ++index) {
392
- code = message.charCodeAt(index);
393
- if (code < 0x80) {
394
- blocks[i >> 2] |= code << SHIFT[i++ & 3];
395
- } else if (code < 0x800) {
396
- blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
397
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
398
- } else if (code < 0xd800 || code >= 0xe000) {
399
- blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
400
- blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
401
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
402
- } else {
403
- code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
404
- blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
405
- blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
406
- blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
407
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
408
- }
409
- }
410
- }
411
-
412
- this.lastByteIndex = i;
413
- this.bytes += i - this.start;
414
- if (i >= 64) {
415
- this.block = blocks[16];
416
- this.start = i - 64;
417
- this.hash();
418
- this.hashed = true;
419
- } else {
420
- this.start = i;
421
- }
422
- }
423
- if (this.bytes > 4294967295) {
424
- this.hBytes += this.bytes / 4294967296 << 0;
425
- this.bytes = this.bytes % 4294967296;
426
- }
427
- return this;
428
- };
429
-
430
- Sha256.prototype.finalize = function () {
431
- if (this.finalized) {
432
- return;
433
- }
434
- this.finalized = true;
435
- var blocks = this.blocks, i = this.lastByteIndex;
436
- blocks[16] = this.block;
437
- blocks[i >> 2] |= EXTRA[i & 3];
438
- this.block = blocks[16];
439
- if (i >= 56) {
440
- if (!this.hashed) {
441
- this.hash();
442
- }
443
- blocks[0] = this.block;
444
- blocks[16] = blocks[1] = blocks[2] = blocks[3] =
445
- blocks[4] = blocks[5] = blocks[6] = blocks[7] =
446
- blocks[8] = blocks[9] = blocks[10] = blocks[11] =
447
- blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
448
- }
449
- blocks[14] = this.hBytes << 3 | this.bytes >>> 29;
450
- blocks[15] = this.bytes << 3;
451
- this.hash();
452
- };
453
-
454
- Sha256.prototype.hash = function () {
455
- var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,
456
- h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;
457
-
458
- for (j = 16; j < 64; ++j) {
459
- // rightrotate
460
- t1 = blocks[j - 15];
461
- s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);
462
- t1 = blocks[j - 2];
463
- s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);
464
- blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;
465
- }
466
-
467
- bc = b & c;
468
- for (j = 0; j < 64; j += 4) {
469
- if (this.first) {
470
- if (this.is224) {
471
- ab = 300032;
472
- t1 = blocks[0] - 1413257819;
473
- h = t1 - 150054599 << 0;
474
- d = t1 + 24177077 << 0;
475
- } else {
476
- ab = 704751109;
477
- t1 = blocks[0] - 210244248;
478
- h = t1 - 1521486534 << 0;
479
- d = t1 + 143694565 << 0;
480
- }
481
- this.first = false;
482
- } else {
483
- s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));
484
- s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));
485
- ab = a & b;
486
- maj = ab ^ (a & c) ^ bc;
487
- ch = (e & f) ^ (~e & g);
488
- t1 = h + s1 + ch + K[j] + blocks[j];
489
- t2 = s0 + maj;
490
- h = d + t1 << 0;
491
- d = t1 + t2 << 0;
492
- }
493
- s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));
494
- s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));
495
- da = d & a;
496
- maj = da ^ (d & b) ^ ab;
497
- ch = (h & e) ^ (~h & f);
498
- t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];
499
- t2 = s0 + maj;
500
- g = c + t1 << 0;
501
- c = t1 + t2 << 0;
502
- s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));
503
- s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));
504
- cd = c & d;
505
- maj = cd ^ (c & a) ^ da;
506
- ch = (g & h) ^ (~g & e);
507
- t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];
508
- t2 = s0 + maj;
509
- f = b + t1 << 0;
510
- b = t1 + t2 << 0;
511
- s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));
512
- s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));
513
- bc = b & c;
514
- maj = bc ^ (b & d) ^ cd;
515
- ch = (f & g) ^ (~f & h);
516
- t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];
517
- t2 = s0 + maj;
518
- e = a + t1 << 0;
519
- a = t1 + t2 << 0;
520
- this.chromeBugWorkAround = true;
521
- }
522
-
523
- this.h0 = this.h0 + a << 0;
524
- this.h1 = this.h1 + b << 0;
525
- this.h2 = this.h2 + c << 0;
526
- this.h3 = this.h3 + d << 0;
527
- this.h4 = this.h4 + e << 0;
528
- this.h5 = this.h5 + f << 0;
529
- this.h6 = this.h6 + g << 0;
530
- this.h7 = this.h7 + h << 0;
531
- };
532
-
533
- Sha256.prototype.hex = function () {
534
- this.finalize();
535
-
536
- var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,
537
- h6 = this.h6, h7 = this.h7;
538
-
539
- var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +
540
- HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +
541
- HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +
542
- HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +
543
- HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +
544
- HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +
545
- HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +
546
- HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +
547
- HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +
548
- HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +
549
- HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +
550
- HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +
551
- HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +
552
- HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +
553
- HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +
554
- HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +
555
- HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +
556
- HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +
557
- HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +
558
- HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +
559
- HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +
560
- HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +
561
- HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +
562
- HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +
563
- HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +
564
- HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +
565
- HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +
566
- HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];
567
- if (!this.is224) {
568
- hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +
569
- HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +
570
- HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +
571
- HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];
572
- }
573
- return hex;
574
- };
575
-
576
- Sha256.prototype.toString = Sha256.prototype.hex;
577
-
578
- Sha256.prototype.digest = function () {
579
- this.finalize();
580
-
581
- var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,
582
- h6 = this.h6, h7 = this.h7;
583
-
584
- var arr = [
585
- (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,
586
- (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,
587
- (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,
588
- (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,
589
- (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,
590
- (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,
591
- (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF
592
- ];
593
- if (!this.is224) {
594
- arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);
595
- }
596
- return arr;
597
- };
598
-
599
- Sha256.prototype.array = Sha256.prototype.digest;
600
-
601
- Sha256.prototype.arrayBuffer = function () {
602
- this.finalize();
603
-
604
- var buffer = new ArrayBuffer(this.is224 ? 28 : 32);
605
- var dataView = new DataView(buffer);
606
- dataView.setUint32(0, this.h0);
607
- dataView.setUint32(4, this.h1);
608
- dataView.setUint32(8, this.h2);
609
- dataView.setUint32(12, this.h3);
610
- dataView.setUint32(16, this.h4);
611
- dataView.setUint32(20, this.h5);
612
- dataView.setUint32(24, this.h6);
613
- if (!this.is224) {
614
- dataView.setUint32(28, this.h7);
615
- }
616
- return buffer;
617
- };
618
-
619
- function HmacSha256(key, is224, sharedMemory) {
620
- var i, type = typeof key;
621
- if (type === 'string') {
622
- var bytes = [], length = key.length, index = 0, code;
623
- for (i = 0; i < length; ++i) {
624
- code = key.charCodeAt(i);
625
- if (code < 0x80) {
626
- bytes[index++] = code;
627
- } else if (code < 0x800) {
628
- bytes[index++] = (0xc0 | (code >> 6));
629
- bytes[index++] = (0x80 | (code & 0x3f));
630
- } else if (code < 0xd800 || code >= 0xe000) {
631
- bytes[index++] = (0xe0 | (code >> 12));
632
- bytes[index++] = (0x80 | ((code >> 6) & 0x3f));
633
- bytes[index++] = (0x80 | (code & 0x3f));
634
- } else {
635
- code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));
636
- bytes[index++] = (0xf0 | (code >> 18));
637
- bytes[index++] = (0x80 | ((code >> 12) & 0x3f));
638
- bytes[index++] = (0x80 | ((code >> 6) & 0x3f));
639
- bytes[index++] = (0x80 | (code & 0x3f));
640
- }
641
- }
642
- key = bytes;
643
- } else {
644
- if (type === 'object') {
645
- if (key === null) {
646
- throw new Error(ERROR);
647
- } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {
648
- key = new Uint8Array(key);
649
- } else if (!Array.isArray(key)) {
650
- if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {
651
- throw new Error(ERROR);
652
- }
653
- }
654
- } else {
655
- throw new Error(ERROR);
656
- }
657
- }
658
-
659
- if (key.length > 64) {
660
- key = (new Sha256(is224, true)).update(key).array();
661
- }
662
-
663
- var oKeyPad = [], iKeyPad = [];
664
- for (i = 0; i < 64; ++i) {
665
- var b = key[i] || 0;
666
- oKeyPad[i] = 0x5c ^ b;
667
- iKeyPad[i] = 0x36 ^ b;
668
- }
669
-
670
- Sha256.call(this, is224, sharedMemory);
671
-
672
- this.update(iKeyPad);
673
- this.oKeyPad = oKeyPad;
674
- this.inner = true;
675
- this.sharedMemory = sharedMemory;
676
- }
677
- HmacSha256.prototype = new Sha256();
678
-
679
- HmacSha256.prototype.finalize = function () {
680
- Sha256.prototype.finalize.call(this);
681
- if (this.inner) {
682
- this.inner = false;
683
- var innerHash = this.array();
684
- Sha256.call(this, this.is224, this.sharedMemory);
685
- this.update(this.oKeyPad);
686
- this.update(innerHash);
687
- Sha256.prototype.finalize.call(this);
688
- }
689
- };
690
-
691
- var exports = createMethod();
692
- exports.sha256 = exports;
693
- exports.sha224 = createMethod(true);
694
- exports.sha256.hmac = createHmacMethod();
695
- exports.sha224.hmac = createHmacMethod(true);
696
-
697
- if (COMMON_JS) {
698
- module.exports = exports;
699
- } else {
700
- root.sha256 = exports.sha256;
701
- root.sha224 = exports.sha224;
702
- }
703
- })();
704
- }(sha256$1));
216
+ var hasRequiredSha256;
217
+
218
+ function requireSha256 () {
219
+ if (hasRequiredSha256) return sha256$1.exports;
220
+ hasRequiredSha256 = 1;
221
+ (function (module) {
222
+ /*jslint bitwise: true */
223
+ (function () {
224
+
225
+ var ERROR = 'input is invalid type';
226
+ var WINDOW = typeof window === 'object';
227
+ var root = WINDOW ? window : {};
228
+ if (root.JS_SHA256_NO_WINDOW) {
229
+ WINDOW = false;
230
+ }
231
+ var WEB_WORKER = !WINDOW && typeof self === 'object';
232
+ var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
233
+ if (NODE_JS) {
234
+ root = commonjsGlobal;
235
+ } else if (WEB_WORKER) {
236
+ root = self;
237
+ }
238
+ var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && 'object' === 'object' && module.exports;
239
+ var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
240
+ var HEX_CHARS = '0123456789abcdef'.split('');
241
+ var EXTRA = [-2147483648, 8388608, 32768, 128];
242
+ var SHIFT = [24, 16, 8, 0];
243
+ var K = [
244
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
245
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
246
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
247
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
248
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
249
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
250
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
251
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
252
+ ];
253
+ var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];
254
+
255
+ var blocks = [];
256
+
257
+ if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {
258
+ Array.isArray = function (obj) {
259
+ return Object.prototype.toString.call(obj) === '[object Array]';
260
+ };
261
+ }
262
+
263
+ if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
264
+ ArrayBuffer.isView = function (obj) {
265
+ return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
266
+ };
267
+ }
268
+
269
+ var createOutputMethod = function (outputType, is224) {
270
+ return function (message) {
271
+ return new Sha256(is224, true).update(message)[outputType]();
272
+ };
273
+ };
274
+
275
+ var createMethod = function (is224) {
276
+ var method = createOutputMethod('hex', is224);
277
+ if (NODE_JS) {
278
+ method = nodeWrap(method, is224);
279
+ }
280
+ method.create = function () {
281
+ return new Sha256(is224);
282
+ };
283
+ method.update = function (message) {
284
+ return method.create().update(message);
285
+ };
286
+ for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
287
+ var type = OUTPUT_TYPES[i];
288
+ method[type] = createOutputMethod(type, is224);
289
+ }
290
+ return method;
291
+ };
292
+
293
+ var nodeWrap = function (method, is224) {
294
+ var crypto = require$$1;
295
+ var Buffer = require$$1.Buffer;
296
+ var algorithm = is224 ? 'sha224' : 'sha256';
297
+ var bufferFrom;
298
+ if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {
299
+ bufferFrom = Buffer.from;
300
+ } else {
301
+ bufferFrom = function (message) {
302
+ return new Buffer(message);
303
+ };
304
+ }
305
+ var nodeMethod = function (message) {
306
+ if (typeof message === 'string') {
307
+ return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');
308
+ } else {
309
+ if (message === null || message === undefined) {
310
+ throw new Error(ERROR);
311
+ } else if (message.constructor === ArrayBuffer) {
312
+ message = new Uint8Array(message);
313
+ }
314
+ }
315
+ if (Array.isArray(message) || ArrayBuffer.isView(message) ||
316
+ message.constructor === Buffer) {
317
+ return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');
318
+ } else {
319
+ return method(message);
320
+ }
321
+ };
322
+ return nodeMethod;
323
+ };
324
+
325
+ var createHmacOutputMethod = function (outputType, is224) {
326
+ return function (key, message) {
327
+ return new HmacSha256(key, is224, true).update(message)[outputType]();
328
+ };
329
+ };
330
+
331
+ var createHmacMethod = function (is224) {
332
+ var method = createHmacOutputMethod('hex', is224);
333
+ method.create = function (key) {
334
+ return new HmacSha256(key, is224);
335
+ };
336
+ method.update = function (key, message) {
337
+ return method.create(key).update(message);
338
+ };
339
+ for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
340
+ var type = OUTPUT_TYPES[i];
341
+ method[type] = createHmacOutputMethod(type, is224);
342
+ }
343
+ return method;
344
+ };
345
+
346
+ function Sha256(is224, sharedMemory) {
347
+ if (sharedMemory) {
348
+ blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
349
+ blocks[4] = blocks[5] = blocks[6] = blocks[7] =
350
+ blocks[8] = blocks[9] = blocks[10] = blocks[11] =
351
+ blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
352
+ this.blocks = blocks;
353
+ } else {
354
+ this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
355
+ }
356
+
357
+ if (is224) {
358
+ this.h0 = 0xc1059ed8;
359
+ this.h1 = 0x367cd507;
360
+ this.h2 = 0x3070dd17;
361
+ this.h3 = 0xf70e5939;
362
+ this.h4 = 0xffc00b31;
363
+ this.h5 = 0x68581511;
364
+ this.h6 = 0x64f98fa7;
365
+ this.h7 = 0xbefa4fa4;
366
+ } else { // 256
367
+ this.h0 = 0x6a09e667;
368
+ this.h1 = 0xbb67ae85;
369
+ this.h2 = 0x3c6ef372;
370
+ this.h3 = 0xa54ff53a;
371
+ this.h4 = 0x510e527f;
372
+ this.h5 = 0x9b05688c;
373
+ this.h6 = 0x1f83d9ab;
374
+ this.h7 = 0x5be0cd19;
375
+ }
376
+
377
+ this.block = this.start = this.bytes = this.hBytes = 0;
378
+ this.finalized = this.hashed = false;
379
+ this.first = true;
380
+ this.is224 = is224;
381
+ }
382
+
383
+ Sha256.prototype.update = function (message) {
384
+ if (this.finalized) {
385
+ return;
386
+ }
387
+ var notString, type = typeof message;
388
+ if (type !== 'string') {
389
+ if (type === 'object') {
390
+ if (message === null) {
391
+ throw new Error(ERROR);
392
+ } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
393
+ message = new Uint8Array(message);
394
+ } else if (!Array.isArray(message)) {
395
+ if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
396
+ throw new Error(ERROR);
397
+ }
398
+ }
399
+ } else {
400
+ throw new Error(ERROR);
401
+ }
402
+ notString = true;
403
+ }
404
+ var code, index = 0, i, length = message.length, blocks = this.blocks;
405
+
406
+ while (index < length) {
407
+ if (this.hashed) {
408
+ this.hashed = false;
409
+ blocks[0] = this.block;
410
+ blocks[16] = blocks[1] = blocks[2] = blocks[3] =
411
+ blocks[4] = blocks[5] = blocks[6] = blocks[7] =
412
+ blocks[8] = blocks[9] = blocks[10] = blocks[11] =
413
+ blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
414
+ }
415
+
416
+ if (notString) {
417
+ for (i = this.start; index < length && i < 64; ++index) {
418
+ blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
419
+ }
420
+ } else {
421
+ for (i = this.start; index < length && i < 64; ++index) {
422
+ code = message.charCodeAt(index);
423
+ if (code < 0x80) {
424
+ blocks[i >> 2] |= code << SHIFT[i++ & 3];
425
+ } else if (code < 0x800) {
426
+ blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
427
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
428
+ } else if (code < 0xd800 || code >= 0xe000) {
429
+ blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
430
+ blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
431
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
432
+ } else {
433
+ code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
434
+ blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
435
+ blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
436
+ blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
437
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
438
+ }
439
+ }
440
+ }
441
+
442
+ this.lastByteIndex = i;
443
+ this.bytes += i - this.start;
444
+ if (i >= 64) {
445
+ this.block = blocks[16];
446
+ this.start = i - 64;
447
+ this.hash();
448
+ this.hashed = true;
449
+ } else {
450
+ this.start = i;
451
+ }
452
+ }
453
+ if (this.bytes > 4294967295) {
454
+ this.hBytes += this.bytes / 4294967296 << 0;
455
+ this.bytes = this.bytes % 4294967296;
456
+ }
457
+ return this;
458
+ };
459
+
460
+ Sha256.prototype.finalize = function () {
461
+ if (this.finalized) {
462
+ return;
463
+ }
464
+ this.finalized = true;
465
+ var blocks = this.blocks, i = this.lastByteIndex;
466
+ blocks[16] = this.block;
467
+ blocks[i >> 2] |= EXTRA[i & 3];
468
+ this.block = blocks[16];
469
+ if (i >= 56) {
470
+ if (!this.hashed) {
471
+ this.hash();
472
+ }
473
+ blocks[0] = this.block;
474
+ blocks[16] = blocks[1] = blocks[2] = blocks[3] =
475
+ blocks[4] = blocks[5] = blocks[6] = blocks[7] =
476
+ blocks[8] = blocks[9] = blocks[10] = blocks[11] =
477
+ blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
478
+ }
479
+ blocks[14] = this.hBytes << 3 | this.bytes >>> 29;
480
+ blocks[15] = this.bytes << 3;
481
+ this.hash();
482
+ };
483
+
484
+ Sha256.prototype.hash = function () {
485
+ var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,
486
+ h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;
487
+
488
+ for (j = 16; j < 64; ++j) {
489
+ // rightrotate
490
+ t1 = blocks[j - 15];
491
+ s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);
492
+ t1 = blocks[j - 2];
493
+ s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);
494
+ blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;
495
+ }
496
+
497
+ bc = b & c;
498
+ for (j = 0; j < 64; j += 4) {
499
+ if (this.first) {
500
+ if (this.is224) {
501
+ ab = 300032;
502
+ t1 = blocks[0] - 1413257819;
503
+ h = t1 - 150054599 << 0;
504
+ d = t1 + 24177077 << 0;
505
+ } else {
506
+ ab = 704751109;
507
+ t1 = blocks[0] - 210244248;
508
+ h = t1 - 1521486534 << 0;
509
+ d = t1 + 143694565 << 0;
510
+ }
511
+ this.first = false;
512
+ } else {
513
+ s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));
514
+ s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));
515
+ ab = a & b;
516
+ maj = ab ^ (a & c) ^ bc;
517
+ ch = (e & f) ^ (~e & g);
518
+ t1 = h + s1 + ch + K[j] + blocks[j];
519
+ t2 = s0 + maj;
520
+ h = d + t1 << 0;
521
+ d = t1 + t2 << 0;
522
+ }
523
+ s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));
524
+ s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));
525
+ da = d & a;
526
+ maj = da ^ (d & b) ^ ab;
527
+ ch = (h & e) ^ (~h & f);
528
+ t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];
529
+ t2 = s0 + maj;
530
+ g = c + t1 << 0;
531
+ c = t1 + t2 << 0;
532
+ s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));
533
+ s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));
534
+ cd = c & d;
535
+ maj = cd ^ (c & a) ^ da;
536
+ ch = (g & h) ^ (~g & e);
537
+ t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];
538
+ t2 = s0 + maj;
539
+ f = b + t1 << 0;
540
+ b = t1 + t2 << 0;
541
+ s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));
542
+ s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));
543
+ bc = b & c;
544
+ maj = bc ^ (b & d) ^ cd;
545
+ ch = (f & g) ^ (~f & h);
546
+ t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];
547
+ t2 = s0 + maj;
548
+ e = a + t1 << 0;
549
+ a = t1 + t2 << 0;
550
+ this.chromeBugWorkAround = true;
551
+ }
552
+
553
+ this.h0 = this.h0 + a << 0;
554
+ this.h1 = this.h1 + b << 0;
555
+ this.h2 = this.h2 + c << 0;
556
+ this.h3 = this.h3 + d << 0;
557
+ this.h4 = this.h4 + e << 0;
558
+ this.h5 = this.h5 + f << 0;
559
+ this.h6 = this.h6 + g << 0;
560
+ this.h7 = this.h7 + h << 0;
561
+ };
562
+
563
+ Sha256.prototype.hex = function () {
564
+ this.finalize();
565
+
566
+ var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,
567
+ h6 = this.h6, h7 = this.h7;
568
+
569
+ var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +
570
+ HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +
571
+ HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +
572
+ HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +
573
+ HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +
574
+ HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +
575
+ HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +
576
+ HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +
577
+ HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +
578
+ HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +
579
+ HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +
580
+ HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +
581
+ HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +
582
+ HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +
583
+ HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +
584
+ HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +
585
+ HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +
586
+ HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +
587
+ HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +
588
+ HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +
589
+ HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +
590
+ HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +
591
+ HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +
592
+ HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +
593
+ HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +
594
+ HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +
595
+ HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +
596
+ HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];
597
+ if (!this.is224) {
598
+ hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +
599
+ HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +
600
+ HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +
601
+ HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];
602
+ }
603
+ return hex;
604
+ };
605
+
606
+ Sha256.prototype.toString = Sha256.prototype.hex;
607
+
608
+ Sha256.prototype.digest = function () {
609
+ this.finalize();
610
+
611
+ var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,
612
+ h6 = this.h6, h7 = this.h7;
613
+
614
+ var arr = [
615
+ (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,
616
+ (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,
617
+ (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,
618
+ (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,
619
+ (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,
620
+ (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,
621
+ (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF
622
+ ];
623
+ if (!this.is224) {
624
+ arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);
625
+ }
626
+ return arr;
627
+ };
628
+
629
+ Sha256.prototype.array = Sha256.prototype.digest;
630
+
631
+ Sha256.prototype.arrayBuffer = function () {
632
+ this.finalize();
633
+
634
+ var buffer = new ArrayBuffer(this.is224 ? 28 : 32);
635
+ var dataView = new DataView(buffer);
636
+ dataView.setUint32(0, this.h0);
637
+ dataView.setUint32(4, this.h1);
638
+ dataView.setUint32(8, this.h2);
639
+ dataView.setUint32(12, this.h3);
640
+ dataView.setUint32(16, this.h4);
641
+ dataView.setUint32(20, this.h5);
642
+ dataView.setUint32(24, this.h6);
643
+ if (!this.is224) {
644
+ dataView.setUint32(28, this.h7);
645
+ }
646
+ return buffer;
647
+ };
648
+
649
+ function HmacSha256(key, is224, sharedMemory) {
650
+ var i, type = typeof key;
651
+ if (type === 'string') {
652
+ var bytes = [], length = key.length, index = 0, code;
653
+ for (i = 0; i < length; ++i) {
654
+ code = key.charCodeAt(i);
655
+ if (code < 0x80) {
656
+ bytes[index++] = code;
657
+ } else if (code < 0x800) {
658
+ bytes[index++] = (0xc0 | (code >> 6));
659
+ bytes[index++] = (0x80 | (code & 0x3f));
660
+ } else if (code < 0xd800 || code >= 0xe000) {
661
+ bytes[index++] = (0xe0 | (code >> 12));
662
+ bytes[index++] = (0x80 | ((code >> 6) & 0x3f));
663
+ bytes[index++] = (0x80 | (code & 0x3f));
664
+ } else {
665
+ code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));
666
+ bytes[index++] = (0xf0 | (code >> 18));
667
+ bytes[index++] = (0x80 | ((code >> 12) & 0x3f));
668
+ bytes[index++] = (0x80 | ((code >> 6) & 0x3f));
669
+ bytes[index++] = (0x80 | (code & 0x3f));
670
+ }
671
+ }
672
+ key = bytes;
673
+ } else {
674
+ if (type === 'object') {
675
+ if (key === null) {
676
+ throw new Error(ERROR);
677
+ } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {
678
+ key = new Uint8Array(key);
679
+ } else if (!Array.isArray(key)) {
680
+ if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {
681
+ throw new Error(ERROR);
682
+ }
683
+ }
684
+ } else {
685
+ throw new Error(ERROR);
686
+ }
687
+ }
688
+
689
+ if (key.length > 64) {
690
+ key = (new Sha256(is224, true)).update(key).array();
691
+ }
692
+
693
+ var oKeyPad = [], iKeyPad = [];
694
+ for (i = 0; i < 64; ++i) {
695
+ var b = key[i] || 0;
696
+ oKeyPad[i] = 0x5c ^ b;
697
+ iKeyPad[i] = 0x36 ^ b;
698
+ }
699
+
700
+ Sha256.call(this, is224, sharedMemory);
701
+
702
+ this.update(iKeyPad);
703
+ this.oKeyPad = oKeyPad;
704
+ this.inner = true;
705
+ this.sharedMemory = sharedMemory;
706
+ }
707
+ HmacSha256.prototype = new Sha256();
708
+
709
+ HmacSha256.prototype.finalize = function () {
710
+ Sha256.prototype.finalize.call(this);
711
+ if (this.inner) {
712
+ this.inner = false;
713
+ var innerHash = this.array();
714
+ Sha256.call(this, this.is224, this.sharedMemory);
715
+ this.update(this.oKeyPad);
716
+ this.update(innerHash);
717
+ Sha256.prototype.finalize.call(this);
718
+ }
719
+ };
720
+
721
+ var exports = createMethod();
722
+ exports.sha256 = exports;
723
+ exports.sha224 = createMethod(true);
724
+ exports.sha256.hmac = createHmacMethod();
725
+ exports.sha224.hmac = createHmacMethod(true);
726
+
727
+ if (COMMON_JS) {
728
+ module.exports = exports;
729
+ } else {
730
+ root.sha256 = exports.sha256;
731
+ root.sha224 = exports.sha224;
732
+ }
733
+ })();
734
+ } (sha256$1));
735
+ return sha256$1.exports;
736
+ }
705
737
 
706
- const sha256 = sha256$1.exports;
738
+ var sha256Exports = requireSha256();
739
+ var sha256 = /*@__PURE__*/getDefaultExportFromCjs(sha256Exports);
707
740
 
708
741
  class InvalidTokenError extends Error {
709
742
  }
@@ -1136,7 +1169,7 @@ function Keycloak (config) {
1136
1169
  case "S256":
1137
1170
  // hash codeVerifier, then encode as url-safe base64 without padding
1138
1171
  var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));
1139
- var encodedHash = base64Js.fromByteArray(hashBytes)
1172
+ var encodedHash = base64.fromByteArray(hashBytes)
1140
1173
  .replace(/\+/g, '-')
1141
1174
  .replace(/\//g, '_')
1142
1175
  .replace(/\=/g, '');
@@ -1922,7 +1955,7 @@ function Keycloak (config) {
1922
1955
  var timeoutHandle = null;
1923
1956
  var timeoutPromise = new Promise(function (resolve, reject) {
1924
1957
  timeoutHandle = setTimeout(function () {
1925
- reject({ "error": errorMessage || "Promise is not settled within timeout of " + timeout + "ms" });
1958
+ reject({ "error": errorMessage });
1926
1959
  }, timeout);
1927
1960
  });
1928
1961
 
@@ -2502,1374 +2535,1386 @@ function Keycloak (config) {
2502
2535
  * SOFTWARE.
2503
2536
  */
2504
2537
 
2505
- /**
2506
- * Parses a substring of the hash as a number.
2507
- * @param {number} startPosition
2508
- * @param {number=} octets
2509
- */
2510
- function parseHex(hash, startPosition, octets) {
2511
- return parseInt(hash.substr(startPosition, octets), 16);
2512
- }
2513
-
2514
- function decToHex(v) {
2515
- v |= 0; // Ensure integer value
2516
- return v < 0 ? "00" :
2517
- v < 16 ? "0" + v.toString(16) :
2518
- v < 256 ? v.toString(16) :
2519
- "ff";
2520
- }
2521
-
2522
- function hueToRgb(m1, m2, h) {
2523
- h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;
2524
- return decToHex(255 * (
2525
- h < 1 ? m1 + (m2 - m1) * h :
2526
- h < 3 ? m2 :
2527
- h < 4 ? m1 + (m2 - m1) * (4 - h) :
2528
- m1));
2529
- }
2530
-
2531
- /**
2532
- * @param {string} color Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.
2533
- * @returns {string}
2534
- */
2535
- function parseColor(color) {
2536
- if (/^#[0-9a-f]{3,8}$/i.test(color)) {
2537
- var result;
2538
- var colorLength = color.length;
2539
-
2540
- if (colorLength < 6) {
2541
- var r = color[1],
2542
- g = color[2],
2543
- b = color[3],
2544
- a = color[4] || "";
2545
- result = "#" + r + r + g + g + b + b + a + a;
2546
- }
2547
- if (colorLength == 7 || colorLength > 8) {
2548
- result = color;
2549
- }
2550
-
2551
- return result;
2552
- }
2553
- }
2554
-
2555
- /**
2556
- * Converts a hexadecimal color to a CSS3 compatible color.
2557
- * @param {string} hexColor Color on the format "#RRGGBB" or "#RRGGBBAA"
2558
- * @returns {string}
2559
- */
2560
- function toCss3Color(hexColor) {
2561
- var a = parseHex(hexColor, 7, 2);
2562
- var result;
2563
-
2564
- if (isNaN(a)) {
2565
- result = hexColor;
2566
- } else {
2567
- var r = parseHex(hexColor, 1, 2),
2568
- g = parseHex(hexColor, 3, 2),
2569
- b = parseHex(hexColor, 5, 2);
2570
- result = "rgba(" + r + "," + g + "," + b + "," + (a / 255).toFixed(2) + ")";
2571
- }
2572
-
2573
- return result;
2574
- }
2575
-
2576
- /**
2577
- * Converts an HSL color to a hexadecimal RGB color.
2578
- * @param {number} hue Hue in range [0, 1]
2579
- * @param {number} saturation Saturation in range [0, 1]
2580
- * @param {number} lightness Lightness in range [0, 1]
2581
- * @returns {string}
2582
- */
2583
- function hsl(hue, saturation, lightness) {
2584
- // Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color
2585
- var result;
2586
-
2587
- if (saturation == 0) {
2588
- var partialHex = decToHex(lightness * 255);
2589
- result = partialHex + partialHex + partialHex;
2590
- }
2591
- else {
2592
- var m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,
2593
- m1 = lightness * 2 - m2;
2594
- result =
2595
- hueToRgb(m1, m2, hue * 6 + 2) +
2596
- hueToRgb(m1, m2, hue * 6) +
2597
- hueToRgb(m1, m2, hue * 6 - 2);
2598
- }
2599
-
2600
- return "#" + result;
2601
- }
2602
-
2603
- /**
2604
- * Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the "dark" hues
2605
- * @param {number} hue Hue in range [0, 1]
2606
- * @param {number} saturation Saturation in range [0, 1]
2607
- * @param {number} lightness Lightness in range [0, 1]
2608
- * @returns {string}
2609
- */
2610
- function correctedHsl(hue, saturation, lightness) {
2611
- // The corrector specifies the perceived middle lightness for each hue
2612
- var correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],
2613
- corrector = correctors[(hue * 6 + 0.5) | 0];
2614
-
2615
- // Adjust the input lightness relative to the corrector
2616
- lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;
2617
-
2618
- return hsl(hue, saturation, lightness);
2619
- }
2620
-
2621
- // In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for
2622
- // backward compatibility.
2623
-
2624
- var GLOBAL =
2625
- typeof window !== "undefined" ? window :
2626
- typeof self !== "undefined" ? self :
2627
- typeof commonjsGlobal !== "undefined" ? commonjsGlobal :
2628
- {};
2629
-
2630
- /**
2631
- * @typedef {Object} ParsedConfiguration
2632
- * @property {number} colorSaturation
2633
- * @property {number} grayscaleSaturation
2634
- * @property {string} backColor
2635
- * @property {number} iconPadding
2636
- * @property {function(number):number} hue
2637
- * @property {function(number):number} colorLightness
2638
- * @property {function(number):number} grayscaleLightness
2639
- */
2640
-
2641
- var CONFIG_PROPERTIES = {
2642
- W/*GLOBAL*/: "jdenticon_config",
2643
- n/*MODULE*/: "config",
2644
- };
2645
-
2646
- var rootConfigurationHolder = {};
2647
-
2648
- /**
2649
- * Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console
2650
- * when it is being used.
2651
- * @param {!Object} rootObject
2652
- */
2653
- function defineConfigProperty(rootObject) {
2654
- rootConfigurationHolder = rootObject;
2655
- }
2656
-
2657
- /**
2658
- * Sets a new icon style configuration. The new configuration is not merged with the previous one. *
2659
- * @param {Object} newConfiguration - New configuration object.
2660
- */
2661
- function configure(newConfiguration) {
2662
- if (arguments.length) {
2663
- rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] = newConfiguration;
2664
- }
2665
- return rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/];
2666
- }
2667
-
2668
- /**
2669
- * Gets the normalized current Jdenticon color configuration. Missing fields have default values.
2670
- * @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A
2671
- * local configuration overrides the global configuration in it entirety. This parameter can for backward
2672
- * compatibility also contain a padding value. A padding value only overrides the global padding, not the
2673
- * entire global configuration.
2674
- * @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor
2675
- * explicitly to the API method.
2676
- * @returns {ParsedConfiguration}
2677
- */
2678
- function getConfiguration(paddingOrLocalConfig, defaultPadding) {
2679
- var configObject =
2680
- typeof paddingOrLocalConfig == "object" && paddingOrLocalConfig ||
2681
- rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] ||
2682
- GLOBAL[CONFIG_PROPERTIES.W/*GLOBAL*/] ||
2683
- { },
2684
-
2685
- lightnessConfig = configObject["lightness"] || { },
2686
-
2687
- // In versions < 2.1.0 there was no grayscale saturation -
2688
- // saturation was the color saturation.
2689
- saturation = configObject["saturation"] || { },
2690
- colorSaturation = "color" in saturation ? saturation["color"] : saturation,
2691
- grayscaleSaturation = saturation["grayscale"],
2692
-
2693
- backColor = configObject["backColor"],
2694
- padding = configObject["padding"];
2695
-
2696
- /**
2697
- * Creates a lightness range.
2698
- */
2699
- function lightness(configName, defaultRange) {
2700
- var range = lightnessConfig[configName];
2701
-
2702
- // Check if the lightness range is an array-like object. This way we ensure the
2703
- // array contain two values at the same time.
2704
- if (!(range && range.length > 1)) {
2705
- range = defaultRange;
2706
- }
2707
-
2708
- /**
2709
- * Gets a lightness relative the specified value in the specified lightness range.
2710
- */
2711
- return function (value) {
2712
- value = range[0] + value * (range[1] - range[0]);
2713
- return value < 0 ? 0 : value > 1 ? 1 : value;
2714
- };
2715
- }
2716
-
2717
- /**
2718
- * Gets a hue allowed by the configured hue restriction,
2719
- * provided the originally computed hue.
2720
- */
2721
- function hueFunction(originalHue) {
2722
- var hueConfig = configObject["hues"];
2723
- var hue;
2724
-
2725
- // Check if 'hues' is an array-like object. This way we also ensure that
2726
- // the array is not empty, which would mean no hue restriction.
2727
- if (hueConfig && hueConfig.length > 0) {
2728
- // originalHue is in the range [0, 1]
2729
- // Multiply with 0.999 to change the range to [0, 1) and then truncate the index.
2730
- hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];
2731
- }
2732
-
2733
- return typeof hue == "number" ?
2734
-
2735
- // A hue was specified. We need to convert the hue from
2736
- // degrees on any turn - e.g. 746° is a perfectly valid hue -
2737
- // to turns in the range [0, 1).
2738
- ((((hue / 360) % 1) + 1) % 1) :
2739
-
2740
- // No hue configured => use original hue
2741
- originalHue;
2742
- }
2743
-
2744
- return {
2745
- X/*hue*/: hueFunction,
2746
- o/*colorSaturation*/: typeof colorSaturation == "number" ? colorSaturation : 0.5,
2747
- F/*grayscaleSaturation*/: typeof grayscaleSaturation == "number" ? grayscaleSaturation : 0,
2748
- p/*colorLightness*/: lightness("color", [0.4, 0.8]),
2749
- G/*grayscaleLightness*/: lightness("grayscale", [0.3, 0.9]),
2750
- H/*backColor*/: parseColor(backColor),
2751
- Y/*iconPadding*/:
2752
- typeof paddingOrLocalConfig == "number" ? paddingOrLocalConfig :
2753
- typeof padding == "number" ? padding :
2754
- defaultPadding
2755
- }
2756
- }
2757
-
2758
- /**
2759
- * Represents a point.
2760
- */
2761
- function Point(x, y) {
2762
- this.x = x;
2763
- this.y = y;
2538
+ var jdenticonModule;
2539
+ var hasRequiredJdenticonModule;
2540
+
2541
+ function requireJdenticonModule () {
2542
+ if (hasRequiredJdenticonModule) return jdenticonModule;
2543
+ hasRequiredJdenticonModule = 1;
2544
+
2545
+ /**
2546
+ * Parses a substring of the hash as a number.
2547
+ * @param {number} startPosition
2548
+ * @param {number=} octets
2549
+ */
2550
+ function parseHex(hash, startPosition, octets) {
2551
+ return parseInt(hash.substr(startPosition, octets), 16);
2552
+ }
2553
+
2554
+ function decToHex(v) {
2555
+ v |= 0; // Ensure integer value
2556
+ return v < 0 ? "00" :
2557
+ v < 16 ? "0" + v.toString(16) :
2558
+ v < 256 ? v.toString(16) :
2559
+ "ff";
2560
+ }
2561
+
2562
+ function hueToRgb(m1, m2, h) {
2563
+ h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;
2564
+ return decToHex(255 * (
2565
+ h < 1 ? m1 + (m2 - m1) * h :
2566
+ h < 3 ? m2 :
2567
+ h < 4 ? m1 + (m2 - m1) * (4 - h) :
2568
+ m1));
2569
+ }
2570
+
2571
+ /**
2572
+ * @param {string} color Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.
2573
+ * @returns {string}
2574
+ */
2575
+ function parseColor(color) {
2576
+ if (/^#[0-9a-f]{3,8}$/i.test(color)) {
2577
+ var result;
2578
+ var colorLength = color.length;
2579
+
2580
+ if (colorLength < 6) {
2581
+ var r = color[1],
2582
+ g = color[2],
2583
+ b = color[3],
2584
+ a = color[4] || "";
2585
+ result = "#" + r + r + g + g + b + b + a + a;
2586
+ }
2587
+ if (colorLength == 7 || colorLength > 8) {
2588
+ result = color;
2589
+ }
2590
+
2591
+ return result;
2592
+ }
2593
+ }
2594
+
2595
+ /**
2596
+ * Converts a hexadecimal color to a CSS3 compatible color.
2597
+ * @param {string} hexColor Color on the format "#RRGGBB" or "#RRGGBBAA"
2598
+ * @returns {string}
2599
+ */
2600
+ function toCss3Color(hexColor) {
2601
+ var a = parseHex(hexColor, 7, 2);
2602
+ var result;
2603
+
2604
+ if (isNaN(a)) {
2605
+ result = hexColor;
2606
+ } else {
2607
+ var r = parseHex(hexColor, 1, 2),
2608
+ g = parseHex(hexColor, 3, 2),
2609
+ b = parseHex(hexColor, 5, 2);
2610
+ result = "rgba(" + r + "," + g + "," + b + "," + (a / 255).toFixed(2) + ")";
2611
+ }
2612
+
2613
+ return result;
2614
+ }
2615
+
2616
+ /**
2617
+ * Converts an HSL color to a hexadecimal RGB color.
2618
+ * @param {number} hue Hue in range [0, 1]
2619
+ * @param {number} saturation Saturation in range [0, 1]
2620
+ * @param {number} lightness Lightness in range [0, 1]
2621
+ * @returns {string}
2622
+ */
2623
+ function hsl(hue, saturation, lightness) {
2624
+ // Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color
2625
+ var result;
2626
+
2627
+ if (saturation == 0) {
2628
+ var partialHex = decToHex(lightness * 255);
2629
+ result = partialHex + partialHex + partialHex;
2630
+ }
2631
+ else {
2632
+ var m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,
2633
+ m1 = lightness * 2 - m2;
2634
+ result =
2635
+ hueToRgb(m1, m2, hue * 6 + 2) +
2636
+ hueToRgb(m1, m2, hue * 6) +
2637
+ hueToRgb(m1, m2, hue * 6 - 2);
2638
+ }
2639
+
2640
+ return "#" + result;
2641
+ }
2642
+
2643
+ /**
2644
+ * Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the "dark" hues
2645
+ * @param {number} hue Hue in range [0, 1]
2646
+ * @param {number} saturation Saturation in range [0, 1]
2647
+ * @param {number} lightness Lightness in range [0, 1]
2648
+ * @returns {string}
2649
+ */
2650
+ function correctedHsl(hue, saturation, lightness) {
2651
+ // The corrector specifies the perceived middle lightness for each hue
2652
+ var correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],
2653
+ corrector = correctors[(hue * 6 + 0.5) | 0];
2654
+
2655
+ // Adjust the input lightness relative to the corrector
2656
+ lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;
2657
+
2658
+ return hsl(hue, saturation, lightness);
2659
+ }
2660
+
2661
+ // In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for
2662
+ // backward compatibility.
2663
+
2664
+ var GLOBAL =
2665
+ typeof window !== "undefined" ? window :
2666
+ typeof self !== "undefined" ? self :
2667
+ typeof commonjsGlobal !== "undefined" ? commonjsGlobal :
2668
+ {};
2669
+
2670
+ /**
2671
+ * @typedef {Object} ParsedConfiguration
2672
+ * @property {number} colorSaturation
2673
+ * @property {number} grayscaleSaturation
2674
+ * @property {string} backColor
2675
+ * @property {number} iconPadding
2676
+ * @property {function(number):number} hue
2677
+ * @property {function(number):number} colorLightness
2678
+ * @property {function(number):number} grayscaleLightness
2679
+ */
2680
+
2681
+ var CONFIG_PROPERTIES = {
2682
+ W/*GLOBAL*/: "jdenticon_config",
2683
+ n/*MODULE*/: "config",
2684
+ };
2685
+
2686
+ var rootConfigurationHolder = {};
2687
+
2688
+ /**
2689
+ * Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console
2690
+ * when it is being used.
2691
+ * @param {!Object} rootObject
2692
+ */
2693
+ function defineConfigProperty(rootObject) {
2694
+ rootConfigurationHolder = rootObject;
2695
+ }
2696
+
2697
+ /**
2698
+ * Sets a new icon style configuration. The new configuration is not merged with the previous one. *
2699
+ * @param {Object} newConfiguration - New configuration object.
2700
+ */
2701
+ function configure(newConfiguration) {
2702
+ if (arguments.length) {
2703
+ rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] = newConfiguration;
2704
+ }
2705
+ return rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/];
2706
+ }
2707
+
2708
+ /**
2709
+ * Gets the normalized current Jdenticon color configuration. Missing fields have default values.
2710
+ * @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A
2711
+ * local configuration overrides the global configuration in it entirety. This parameter can for backward
2712
+ * compatibility also contain a padding value. A padding value only overrides the global padding, not the
2713
+ * entire global configuration.
2714
+ * @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor
2715
+ * explicitly to the API method.
2716
+ * @returns {ParsedConfiguration}
2717
+ */
2718
+ function getConfiguration(paddingOrLocalConfig, defaultPadding) {
2719
+ var configObject =
2720
+ typeof paddingOrLocalConfig == "object" && paddingOrLocalConfig ||
2721
+ rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] ||
2722
+ GLOBAL[CONFIG_PROPERTIES.W/*GLOBAL*/] ||
2723
+ { },
2724
+
2725
+ lightnessConfig = configObject["lightness"] || { },
2726
+
2727
+ // In versions < 2.1.0 there was no grayscale saturation -
2728
+ // saturation was the color saturation.
2729
+ saturation = configObject["saturation"] || { },
2730
+ colorSaturation = "color" in saturation ? saturation["color"] : saturation,
2731
+ grayscaleSaturation = saturation["grayscale"],
2732
+
2733
+ backColor = configObject["backColor"],
2734
+ padding = configObject["padding"];
2735
+
2736
+ /**
2737
+ * Creates a lightness range.
2738
+ */
2739
+ function lightness(configName, defaultRange) {
2740
+ var range = lightnessConfig[configName];
2741
+
2742
+ // Check if the lightness range is an array-like object. This way we ensure the
2743
+ // array contain two values at the same time.
2744
+ if (!(range && range.length > 1)) {
2745
+ range = defaultRange;
2746
+ }
2747
+
2748
+ /**
2749
+ * Gets a lightness relative the specified value in the specified lightness range.
2750
+ */
2751
+ return function (value) {
2752
+ value = range[0] + value * (range[1] - range[0]);
2753
+ return value < 0 ? 0 : value > 1 ? 1 : value;
2754
+ };
2755
+ }
2756
+
2757
+ /**
2758
+ * Gets a hue allowed by the configured hue restriction,
2759
+ * provided the originally computed hue.
2760
+ */
2761
+ function hueFunction(originalHue) {
2762
+ var hueConfig = configObject["hues"];
2763
+ var hue;
2764
+
2765
+ // Check if 'hues' is an array-like object. This way we also ensure that
2766
+ // the array is not empty, which would mean no hue restriction.
2767
+ if (hueConfig && hueConfig.length > 0) {
2768
+ // originalHue is in the range [0, 1]
2769
+ // Multiply with 0.999 to change the range to [0, 1) and then truncate the index.
2770
+ hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];
2771
+ }
2772
+
2773
+ return typeof hue == "number" ?
2774
+
2775
+ // A hue was specified. We need to convert the hue from
2776
+ // degrees on any turn - e.g. 746° is a perfectly valid hue -
2777
+ // to turns in the range [0, 1).
2778
+ ((((hue / 360) % 1) + 1) % 1) :
2779
+
2780
+ // No hue configured => use original hue
2781
+ originalHue;
2782
+ }
2783
+
2784
+ return {
2785
+ X/*hue*/: hueFunction,
2786
+ o/*colorSaturation*/: typeof colorSaturation == "number" ? colorSaturation : 0.5,
2787
+ F/*grayscaleSaturation*/: typeof grayscaleSaturation == "number" ? grayscaleSaturation : 0,
2788
+ p/*colorLightness*/: lightness("color", [0.4, 0.8]),
2789
+ G/*grayscaleLightness*/: lightness("grayscale", [0.3, 0.9]),
2790
+ H/*backColor*/: parseColor(backColor),
2791
+ Y/*iconPadding*/:
2792
+ typeof paddingOrLocalConfig == "number" ? paddingOrLocalConfig :
2793
+ typeof padding == "number" ? padding :
2794
+ defaultPadding
2795
+ }
2796
+ }
2797
+
2798
+ /**
2799
+ * Represents a point.
2800
+ */
2801
+ function Point(x, y) {
2802
+ this.x = x;
2803
+ this.y = y;
2804
+ }
2805
+
2806
+ /**
2807
+ * Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself,
2808
+ * but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.
2809
+ */
2810
+ function Transform(x, y, size, rotation) {
2811
+ this.q/*_x*/ = x;
2812
+ this.t/*_y*/ = y;
2813
+ this.I/*_size*/ = size;
2814
+ this.Z/*_rotation*/ = rotation;
2815
+ }
2816
+
2817
+ /**
2818
+ * Transforms the specified point based on the translation and rotation specification for this Transform.
2819
+ * @param {number} x x-coordinate
2820
+ * @param {number} y y-coordinate
2821
+ * @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.
2822
+ * @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.
2823
+ */
2824
+ Transform.prototype.J/*transformIconPoint*/ = function transformIconPoint (x, y, w, h) {
2825
+ var right = this.q/*_x*/ + this.I/*_size*/,
2826
+ bottom = this.t/*_y*/ + this.I/*_size*/,
2827
+ rotation = this.Z/*_rotation*/;
2828
+ return rotation === 1 ? new Point(right - y - (h || 0), this.t/*_y*/ + x) :
2829
+ rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :
2830
+ rotation === 3 ? new Point(this.q/*_x*/ + y, bottom - x - (w || 0)) :
2831
+ new Point(this.q/*_x*/ + x, this.t/*_y*/ + y);
2832
+ };
2833
+
2834
+ var NO_TRANSFORM = new Transform(0, 0, 0, 0);
2835
+
2836
+
2837
+
2838
+ /**
2839
+ * Provides helper functions for rendering common basic shapes.
2840
+ */
2841
+ function Graphics(renderer) {
2842
+ /**
2843
+ * @type {Renderer}
2844
+ * @private
2845
+ */
2846
+ this.K/*_renderer*/ = renderer;
2847
+
2848
+ /**
2849
+ * @type {Transform}
2850
+ */
2851
+ this.u/*currentTransform*/ = NO_TRANSFORM;
2852
+ }
2853
+ var Graphics__prototype = Graphics.prototype;
2854
+
2855
+ /**
2856
+ * Adds a polygon to the underlying renderer.
2857
+ * @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]
2858
+ * @param {boolean=} invert Specifies if the polygon will be inverted.
2859
+ */
2860
+ Graphics__prototype.g/*addPolygon*/ = function addPolygon (points, invert) {
2861
+ var this$1$1 = this;
2862
+
2863
+ var di = invert ? -2 : 2,
2864
+ transformedPoints = [];
2865
+
2866
+ for (var i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {
2867
+ transformedPoints.push(this$1$1.u/*currentTransform*/.J/*transformIconPoint*/(points[i], points[i + 1]));
2868
+ }
2869
+
2870
+ this.K/*_renderer*/.g/*addPolygon*/(transformedPoints);
2871
+ };
2872
+
2873
+ /**
2874
+ * Adds a polygon to the underlying renderer.
2875
+ * Source: http://stackoverflow.com/a/2173084
2876
+ * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.
2877
+ * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.
2878
+ * @param {number} size The size of the ellipse.
2879
+ * @param {boolean=} invert Specifies if the ellipse will be inverted.
2880
+ */
2881
+ Graphics__prototype.h/*addCircle*/ = function addCircle (x, y, size, invert) {
2882
+ var p = this.u/*currentTransform*/.J/*transformIconPoint*/(x, y, size, size);
2883
+ this.K/*_renderer*/.h/*addCircle*/(p, size, invert);
2884
+ };
2885
+
2886
+ /**
2887
+ * Adds a rectangle to the underlying renderer.
2888
+ * @param {number} x The x-coordinate of the upper left corner of the rectangle.
2889
+ * @param {number} y The y-coordinate of the upper left corner of the rectangle.
2890
+ * @param {number} w The width of the rectangle.
2891
+ * @param {number} h The height of the rectangle.
2892
+ * @param {boolean=} invert Specifies if the rectangle will be inverted.
2893
+ */
2894
+ Graphics__prototype.i/*addRectangle*/ = function addRectangle (x, y, w, h, invert) {
2895
+ this.g/*addPolygon*/([
2896
+ x, y,
2897
+ x + w, y,
2898
+ x + w, y + h,
2899
+ x, y + h
2900
+ ], invert);
2901
+ };
2902
+
2903
+ /**
2904
+ * Adds a right triangle to the underlying renderer.
2905
+ * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.
2906
+ * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.
2907
+ * @param {number} w The width of the triangle.
2908
+ * @param {number} h The height of the triangle.
2909
+ * @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.
2910
+ * @param {boolean=} invert Specifies if the triangle will be inverted.
2911
+ */
2912
+ Graphics__prototype.j/*addTriangle*/ = function addTriangle (x, y, w, h, r, invert) {
2913
+ var points = [
2914
+ x + w, y,
2915
+ x + w, y + h,
2916
+ x, y + h,
2917
+ x, y
2918
+ ];
2919
+ points.splice(((r || 0) % 4) * 2, 2);
2920
+ this.g/*addPolygon*/(points, invert);
2921
+ };
2922
+
2923
+ /**
2924
+ * Adds a rhombus to the underlying renderer.
2925
+ * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.
2926
+ * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.
2927
+ * @param {number} w The width of the rhombus.
2928
+ * @param {number} h The height of the rhombus.
2929
+ * @param {boolean=} invert Specifies if the rhombus will be inverted.
2930
+ */
2931
+ Graphics__prototype.L/*addRhombus*/ = function addRhombus (x, y, w, h, invert) {
2932
+ this.g/*addPolygon*/([
2933
+ x + w / 2, y,
2934
+ x + w, y + h / 2,
2935
+ x + w / 2, y + h,
2936
+ x, y + h / 2
2937
+ ], invert);
2938
+ };
2939
+
2940
+ /**
2941
+ * @param {number} index
2942
+ * @param {Graphics} g
2943
+ * @param {number} cell
2944
+ * @param {number} positionIndex
2945
+ */
2946
+ function centerShape(index, g, cell, positionIndex) {
2947
+ index = index % 14;
2948
+
2949
+ var k, m, w, h, inner, outer;
2950
+
2951
+ !index ? (
2952
+ k = cell * 0.42,
2953
+ g.g/*addPolygon*/([
2954
+ 0, 0,
2955
+ cell, 0,
2956
+ cell, cell - k * 2,
2957
+ cell - k, cell,
2958
+ 0, cell
2959
+ ])) :
2960
+
2961
+ index == 1 ? (
2962
+ w = 0 | (cell * 0.5),
2963
+ h = 0 | (cell * 0.8),
2964
+
2965
+ g.j/*addTriangle*/(cell - w, 0, w, h, 2)) :
2966
+
2967
+ index == 2 ? (
2968
+ w = 0 | (cell / 3),
2969
+ g.i/*addRectangle*/(w, w, cell - w, cell - w)) :
2970
+
2971
+ index == 3 ? (
2972
+ inner = cell * 0.1,
2973
+ // Use fixed outer border widths in small icons to ensure the border is drawn
2974
+ outer =
2975
+ cell < 6 ? 1 :
2976
+ cell < 8 ? 2 :
2977
+ (0 | (cell * 0.25)),
2978
+
2979
+ inner =
2980
+ inner > 1 ? (0 | inner) : // large icon => truncate decimals
2981
+ inner > 0.5 ? 1 : // medium size icon => fixed width
2982
+ inner, // small icon => anti-aliased border
2983
+
2984
+ g.i/*addRectangle*/(outer, outer, cell - inner - outer, cell - inner - outer)) :
2985
+
2986
+ index == 4 ? (
2987
+ m = 0 | (cell * 0.15),
2988
+ w = 0 | (cell * 0.5),
2989
+ g.h/*addCircle*/(cell - w - m, cell - w - m, w)) :
2990
+
2991
+ index == 5 ? (
2992
+ inner = cell * 0.1,
2993
+ outer = inner * 4,
2994
+
2995
+ // Align edge to nearest pixel in large icons
2996
+ outer > 3 && (outer = 0 | outer),
2997
+
2998
+ g.i/*addRectangle*/(0, 0, cell, cell),
2999
+ g.g/*addPolygon*/([
3000
+ outer, outer,
3001
+ cell - inner, outer,
3002
+ outer + (cell - outer - inner) / 2, cell - inner
3003
+ ], true)) :
3004
+
3005
+ index == 6 ?
3006
+ g.g/*addPolygon*/([
3007
+ 0, 0,
3008
+ cell, 0,
3009
+ cell, cell * 0.7,
3010
+ cell * 0.4, cell * 0.4,
3011
+ cell * 0.7, cell,
3012
+ 0, cell
3013
+ ]) :
3014
+
3015
+ index == 7 ?
3016
+ g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :
3017
+
3018
+ index == 8 ? (
3019
+ g.i/*addRectangle*/(0, 0, cell, cell / 2),
3020
+ g.i/*addRectangle*/(0, cell / 2, cell / 2, cell / 2),
3021
+ g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :
3022
+
3023
+ index == 9 ? (
3024
+ inner = cell * 0.14,
3025
+ // Use fixed outer border widths in small icons to ensure the border is drawn
3026
+ outer =
3027
+ cell < 4 ? 1 :
3028
+ cell < 6 ? 2 :
3029
+ (0 | (cell * 0.35)),
3030
+
3031
+ inner =
3032
+ cell < 8 ? inner : // small icon => anti-aliased border
3033
+ (0 | inner), // large icon => truncate decimals
3034
+
3035
+ g.i/*addRectangle*/(0, 0, cell, cell),
3036
+ g.i/*addRectangle*/(outer, outer, cell - outer - inner, cell - outer - inner, true)) :
3037
+
3038
+ index == 10 ? (
3039
+ inner = cell * 0.12,
3040
+ outer = inner * 3,
3041
+
3042
+ g.i/*addRectangle*/(0, 0, cell, cell),
3043
+ g.h/*addCircle*/(outer, outer, cell - inner - outer, true)) :
3044
+
3045
+ index == 11 ?
3046
+ g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :
3047
+
3048
+ index == 12 ? (
3049
+ m = cell * 0.25,
3050
+ g.i/*addRectangle*/(0, 0, cell, cell),
3051
+ g.L/*addRhombus*/(m, m, cell - m, cell - m, true)) :
3052
+
3053
+ // 13
3054
+ (
3055
+ !positionIndex && (
3056
+ m = cell * 0.4, w = cell * 1.2,
3057
+ g.h/*addCircle*/(m, m, w)
3058
+ )
3059
+ );
3060
+ }
3061
+
3062
+ /**
3063
+ * @param {number} index
3064
+ * @param {Graphics} g
3065
+ * @param {number} cell
3066
+ */
3067
+ function outerShape(index, g, cell) {
3068
+ index = index % 4;
3069
+
3070
+ var m;
3071
+
3072
+ !index ?
3073
+ g.j/*addTriangle*/(0, 0, cell, cell, 0) :
3074
+
3075
+ index == 1 ?
3076
+ g.j/*addTriangle*/(0, cell / 2, cell, cell / 2, 0) :
3077
+
3078
+ index == 2 ?
3079
+ g.L/*addRhombus*/(0, 0, cell, cell) :
3080
+
3081
+ // 3
3082
+ (
3083
+ m = cell / 6,
3084
+ g.h/*addCircle*/(m, m, cell - 2 * m)
3085
+ );
3086
+ }
3087
+
3088
+ /**
3089
+ * Gets a set of identicon color candidates for a specified hue and config.
3090
+ * @param {number} hue
3091
+ * @param {ParsedConfiguration} config
3092
+ */
3093
+ function colorTheme(hue, config) {
3094
+ hue = config.X/*hue*/(hue);
3095
+ return [
3096
+ // Dark gray
3097
+ correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(0)),
3098
+ // Mid color
3099
+ correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0.5)),
3100
+ // Light gray
3101
+ correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(1)),
3102
+ // Light color
3103
+ correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(1)),
3104
+ // Dark color
3105
+ correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0))
3106
+ ];
3107
+ }
3108
+
3109
+ /**
3110
+ * Draws an identicon to a specified renderer.
3111
+ * @param {Renderer} renderer
3112
+ * @param {string} hash
3113
+ * @param {Object|number=} config
3114
+ */
3115
+ function iconGenerator(renderer, hash, config) {
3116
+ var parsedConfig = getConfiguration(config, 0.08);
3117
+
3118
+ // Set background color
3119
+ if (parsedConfig.H/*backColor*/) {
3120
+ renderer.m/*setBackground*/(parsedConfig.H/*backColor*/);
3121
+ }
3122
+
3123
+ // Calculate padding and round to nearest integer
3124
+ var size = renderer.k/*iconSize*/;
3125
+ var padding = (0.5 + size * parsedConfig.Y/*iconPadding*/) | 0;
3126
+ size -= padding * 2;
3127
+
3128
+ var graphics = new Graphics(renderer);
3129
+
3130
+ // Calculate cell size and ensure it is an integer
3131
+ var cell = 0 | (size / 4);
3132
+
3133
+ // Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon
3134
+ var x = 0 | (padding + size / 2 - cell * 2);
3135
+ var y = 0 | (padding + size / 2 - cell * 2);
3136
+
3137
+ function renderShape(colorIndex, shapes, index, rotationIndex, positions) {
3138
+ var shapeIndex = parseHex(hash, index, 1);
3139
+ var r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;
3140
+
3141
+ renderer.M/*beginShape*/(availableColors[selectedColorIndexes[colorIndex]]);
3142
+
3143
+ for (var i = 0; i < positions.length; i++) {
3144
+ graphics.u/*currentTransform*/ = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);
3145
+ shapes(shapeIndex, graphics, cell, i);
3146
+ }
3147
+
3148
+ renderer.N/*endShape*/();
3149
+ }
3150
+
3151
+ // AVAILABLE COLORS
3152
+ var hue = parseHex(hash, -7) / 0xfffffff,
3153
+
3154
+ // Available colors for this icon
3155
+ availableColors = colorTheme(hue, parsedConfig),
3156
+
3157
+ // The index of the selected colors
3158
+ selectedColorIndexes = [];
3159
+
3160
+ var index;
3161
+
3162
+ function isDuplicate(values) {
3163
+ if (values.indexOf(index) >= 0) {
3164
+ for (var i = 0; i < values.length; i++) {
3165
+ if (selectedColorIndexes.indexOf(values[i]) >= 0) {
3166
+ return true;
3167
+ }
3168
+ }
3169
+ }
3170
+ }
3171
+
3172
+ for (var i = 0; i < 3; i++) {
3173
+ index = parseHex(hash, 8 + i, 1) % availableColors.length;
3174
+ if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo
3175
+ isDuplicate([2, 3])) { // Disallow light gray and light color combo
3176
+ index = 1;
3177
+ }
3178
+ selectedColorIndexes.push(index);
3179
+ }
3180
+
3181
+ // ACTUAL RENDERING
3182
+ // Sides
3183
+ renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);
3184
+ // Corners
3185
+ renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);
3186
+ // Center
3187
+ renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);
3188
+
3189
+ renderer.finish();
3190
+ }
3191
+
3192
+ /**
3193
+ * Computes a SHA1 hash for any value and returns it as a hexadecimal string.
3194
+ *
3195
+ * This function is optimized for minimal code size and rather short messages.
3196
+ *
3197
+ * @param {string} message
3198
+ */
3199
+ function sha1(message) {
3200
+ var HASH_SIZE_HALF_BYTES = 40;
3201
+ var BLOCK_SIZE_WORDS = 16;
3202
+
3203
+ // Variables
3204
+ // `var` is used to be able to minimize the number of `var` keywords.
3205
+ var i = 0,
3206
+ f = 0,
3207
+
3208
+ // Use `encodeURI` to UTF8 encode the message without any additional libraries
3209
+ // We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky
3210
+ // since `unescape` is deprecated.
3211
+ urlEncodedMessage = encodeURI(message) + "%80", // trailing '1' bit padding
3212
+
3213
+ // This can be changed to a preallocated Uint32Array array for greater performance and larger code size
3214
+ data = [],
3215
+ dataSize,
3216
+
3217
+ hashBuffer = [],
3218
+
3219
+ a = 0x67452301,
3220
+ b = 0xefcdab89,
3221
+ c = ~a,
3222
+ d = ~b,
3223
+ e = 0xc3d2e1f0,
3224
+ hash = [a, b, c, d, e],
3225
+
3226
+ blockStartIndex = 0,
3227
+ hexHash = "";
3228
+
3229
+ /**
3230
+ * Rotates the value a specified number of bits to the left.
3231
+ * @param {number} value Value to rotate
3232
+ * @param {number} shift Bit count to shift.
3233
+ */
3234
+ function rotl(value, shift) {
3235
+ return (value << shift) | (value >>> (32 - shift));
3236
+ }
3237
+
3238
+ // Message data
3239
+ for ( ; i < urlEncodedMessage.length; f++) {
3240
+ data[f >> 2] = data[f >> 2] |
3241
+ (
3242
+ (
3243
+ urlEncodedMessage[i] == "%"
3244
+ // Percent encoded byte
3245
+ ? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)
3246
+ // Unencoded byte
3247
+ : urlEncodedMessage.charCodeAt(i++)
3248
+ )
3249
+
3250
+ // Read bytes in reverse order (big endian words)
3251
+ << ((3 - (f & 3)) * 8)
3252
+ );
3253
+ }
3254
+
3255
+ // f is now the length of the utf8 encoded message
3256
+ // 7 = 8 bytes (64 bit) for message size, -1 to round down
3257
+ // >> 6 = integer division with block size
3258
+ dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;
3259
+
3260
+ // Message size in bits.
3261
+ // SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least
3262
+ // significant 32 bits are set. -8 is for the '1' bit padding byte.
3263
+ data[dataSize - 1] = f * 8 - 8;
3264
+
3265
+ // Compute hash
3266
+ for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {
3267
+ for (i = 0; i < 80; i++) {
3268
+ f = rotl(a, 5) + e + (
3269
+ // Ch
3270
+ i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :
3271
+
3272
+ // Parity
3273
+ i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :
3274
+
3275
+ // Maj
3276
+ i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :
3277
+
3278
+ // Parity
3279
+ (b ^ c ^ d) + 0xca62c1d6
3280
+ ) + (
3281
+ hashBuffer[i] = i < BLOCK_SIZE_WORDS
3282
+ // Bitwise OR is used to coerse `undefined` to 0
3283
+ ? (data[blockStartIndex + i] | 0)
3284
+ : rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)
3285
+ );
3286
+
3287
+ e = d;
3288
+ d = c;
3289
+ c = rotl(b, 30);
3290
+ b = a;
3291
+ a = f;
3292
+ }
3293
+
3294
+ hash[0] = a = ((hash[0] + a) | 0);
3295
+ hash[1] = b = ((hash[1] + b) | 0);
3296
+ hash[2] = c = ((hash[2] + c) | 0);
3297
+ hash[3] = d = ((hash[3] + d) | 0);
3298
+ hash[4] = e = ((hash[4] + e) | 0);
3299
+ }
3300
+
3301
+ // Format hex hash
3302
+ for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {
3303
+ hexHash += (
3304
+ (
3305
+ // Get word (2^3 half-bytes per word)
3306
+ hash[i >> 3] >>>
3307
+
3308
+ // Append half-bytes in reverse order
3309
+ ((7 - (i & 7)) * 4)
3310
+ )
3311
+ // Clamp to half-byte
3312
+ & 0xf
3313
+ ).toString(16);
3314
+ }
3315
+
3316
+ return hexHash;
3317
+ }
3318
+
3319
+ /**
3320
+ * Inputs a value that might be a valid hash string for Jdenticon and returns it
3321
+ * if it is determined valid, otherwise a falsy value is returned.
3322
+ */
3323
+ function isValidHash(hashCandidate) {
3324
+ return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;
3325
+ }
3326
+
3327
+ /**
3328
+ * Computes a hash for the specified value. Currently SHA1 is used. This function
3329
+ * always returns a valid hash.
3330
+ */
3331
+ function computeHash(value) {
3332
+ return sha1(value == null ? "" : "" + value);
3333
+ }
3334
+
3335
+
3336
+
3337
+ /**
3338
+ * Renderer redirecting drawing commands to a canvas context.
3339
+ * @implements {Renderer}
3340
+ */
3341
+ function CanvasRenderer(ctx, iconSize) {
3342
+ var canvas = ctx.canvas;
3343
+ var width = canvas.width;
3344
+ var height = canvas.height;
3345
+
3346
+ ctx.save();
3347
+
3348
+ if (!iconSize) {
3349
+ iconSize = Math.min(width, height);
3350
+
3351
+ ctx.translate(
3352
+ ((width - iconSize) / 2) | 0,
3353
+ ((height - iconSize) / 2) | 0);
3354
+ }
3355
+
3356
+ /**
3357
+ * @private
3358
+ */
3359
+ this.l/*_ctx*/ = ctx;
3360
+ this.k/*iconSize*/ = iconSize;
3361
+
3362
+ ctx.clearRect(0, 0, iconSize, iconSize);
3363
+ }
3364
+ var CanvasRenderer__prototype = CanvasRenderer.prototype;
3365
+
3366
+ /**
3367
+ * Fills the background with the specified color.
3368
+ * @param {string} fillColor Fill color on the format #rrggbb[aa].
3369
+ */
3370
+ CanvasRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {
3371
+ var ctx = this.l/*_ctx*/;
3372
+ var iconSize = this.k/*iconSize*/;
3373
+
3374
+ ctx.fillStyle = toCss3Color(fillColor);
3375
+ ctx.fillRect(0, 0, iconSize, iconSize);
3376
+ };
3377
+
3378
+ /**
3379
+ * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.
3380
+ * @param {string} fillColor Fill color on format #rrggbb[aa].
3381
+ */
3382
+ CanvasRenderer__prototype.M/*beginShape*/ = function beginShape (fillColor) {
3383
+ var ctx = this.l/*_ctx*/;
3384
+ ctx.fillStyle = toCss3Color(fillColor);
3385
+ ctx.beginPath();
3386
+ };
3387
+
3388
+ /**
3389
+ * Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.
3390
+ */
3391
+ CanvasRenderer__prototype.N/*endShape*/ = function endShape () {
3392
+ this.l/*_ctx*/.fill();
3393
+ };
3394
+
3395
+ /**
3396
+ * Adds a polygon to the rendering queue.
3397
+ * @param points An array of Point objects.
3398
+ */
3399
+ CanvasRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {
3400
+ var ctx = this.l/*_ctx*/;
3401
+ ctx.moveTo(points[0].x, points[0].y);
3402
+ for (var i = 1; i < points.length; i++) {
3403
+ ctx.lineTo(points[i].x, points[i].y);
3404
+ }
3405
+ ctx.closePath();
3406
+ };
3407
+
3408
+ /**
3409
+ * Adds a circle to the rendering queue.
3410
+ * @param {Point} point The upper left corner of the circle bounding box.
3411
+ * @param {number} diameter The diameter of the circle.
3412
+ * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
3413
+ */
3414
+ CanvasRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
3415
+ var ctx = this.l/*_ctx*/,
3416
+ radius = diameter / 2;
3417
+ ctx.moveTo(point.x + radius, point.y + radius);
3418
+ ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);
3419
+ ctx.closePath();
3420
+ };
3421
+
3422
+ /**
3423
+ * Called when the icon has been completely drawn.
3424
+ */
3425
+ CanvasRenderer__prototype.finish = function finish () {
3426
+ this.l/*_ctx*/.restore();
3427
+ };
3428
+
3429
+ var ICON_TYPE_SVG = 1;
3430
+
3431
+ var ICON_TYPE_CANVAS = 2;
3432
+
3433
+ var ATTRIBUTES = {
3434
+ O/*HASH*/: "data-jdenticon-hash",
3435
+ v/*VALUE*/: "data-jdenticon-value"
3436
+ };
3437
+
3438
+ var IS_RENDERED_PROPERTY = "jdenticonRendered";
3439
+
3440
+ var ICON_SELECTOR = "[" + ATTRIBUTES.O/*HASH*/ +"],[" + ATTRIBUTES.v/*VALUE*/ +"]";
3441
+
3442
+ var documentQuerySelectorAll = /** @type {!Function} */ (
3443
+ typeof document !== "undefined" && document.querySelectorAll.bind(document));
3444
+
3445
+ function getIdenticonType(el) {
3446
+ if (el) {
3447
+ var tagName = el["tagName"];
3448
+
3449
+ if (/^svg$/i.test(tagName)) {
3450
+ return ICON_TYPE_SVG;
3451
+ }
3452
+
3453
+ if (/^canvas$/i.test(tagName) && "getContext" in el) {
3454
+ return ICON_TYPE_CANVAS;
3455
+ }
3456
+ }
3457
+ }
3458
+
3459
+ /**
3460
+ * Draws an identicon to a context.
3461
+ * @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).
3462
+ * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.
3463
+ * @param {number} size - Icon size in pixels.
3464
+ * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3465
+ * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
3466
+ * specified in place of a configuration object.
3467
+ */
3468
+ function drawIcon(ctx, hashOrValue, size, config) {
3469
+ if (!ctx) {
3470
+ throw new Error("No canvas specified.");
3471
+ }
3472
+
3473
+ iconGenerator(new CanvasRenderer(ctx, size),
3474
+ isValidHash(hashOrValue) || computeHash(hashOrValue),
3475
+ config);
3476
+
3477
+ var canvas = ctx.canvas;
3478
+ if (canvas) {
3479
+ canvas[IS_RENDERED_PROPERTY] = true;
3480
+ }
3481
+ }
3482
+
3483
+ /**
3484
+ * Prepares a measure to be used as a measure in an SVG path, by
3485
+ * rounding the measure to a single decimal. This reduces the file
3486
+ * size of the generated SVG with more than 50% in some cases.
3487
+ */
3488
+ function svgValue(value) {
3489
+ return ((value * 10 + 0.5) | 0) / 10;
3490
+ }
3491
+
3492
+ /**
3493
+ * Represents an SVG path element.
3494
+ */
3495
+ function SvgPath() {
3496
+ /**
3497
+ * This property holds the data string (path.d) of the SVG path.
3498
+ * @type {string}
3499
+ */
3500
+ this.A/*dataString*/ = "";
3501
+ }
3502
+ var SvgPath__prototype = SvgPath.prototype;
3503
+
3504
+ /**
3505
+ * Adds a polygon with the current fill color to the SVG path.
3506
+ * @param points An array of Point objects.
3507
+ */
3508
+ SvgPath__prototype.g/*addPolygon*/ = function addPolygon (points) {
3509
+ var dataString = "";
3510
+ for (var i = 0; i < points.length; i++) {
3511
+ dataString += (i ? "L" : "M") + svgValue(points[i].x) + " " + svgValue(points[i].y);
3512
+ }
3513
+ this.A/*dataString*/ += dataString + "Z";
3514
+ };
3515
+
3516
+ /**
3517
+ * Adds a circle with the current fill color to the SVG path.
3518
+ * @param {Point} point The upper left corner of the circle bounding box.
3519
+ * @param {number} diameter The diameter of the circle.
3520
+ * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
3521
+ */
3522
+ SvgPath__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
3523
+ var sweepFlag = counterClockwise ? 0 : 1,
3524
+ svgRadius = svgValue(diameter / 2),
3525
+ svgDiameter = svgValue(diameter),
3526
+ svgArc = "a" + svgRadius + "," + svgRadius + " 0 1," + sweepFlag + " ";
3527
+
3528
+ this.A/*dataString*/ +=
3529
+ "M" + svgValue(point.x) + " " + svgValue(point.y + diameter / 2) +
3530
+ svgArc + svgDiameter + ",0" +
3531
+ svgArc + (-svgDiameter) + ",0";
3532
+ };
3533
+
3534
+
3535
+
3536
+ /**
3537
+ * Renderer producing SVG output.
3538
+ * @implements {Renderer}
3539
+ */
3540
+ function SvgRenderer(target) {
3541
+
3542
+ /**
3543
+ * @type {Object.<string,SvgPath>}
3544
+ * @private
3545
+ */
3546
+ this.C/*_pathsByColor*/ = { };
3547
+
3548
+ /**
3549
+ * @type {SvgElement|SvgWriter}
3550
+ * @private
3551
+ */
3552
+ this.P/*_target*/ = target;
3553
+
3554
+ /**
3555
+ * @type {number}
3556
+ */
3557
+ this.k/*iconSize*/ = target.k/*iconSize*/;
3558
+ }
3559
+ var SvgRenderer__prototype = SvgRenderer.prototype;
3560
+
3561
+ /**
3562
+ * Fills the background with the specified color.
3563
+ * @param {string} fillColor Fill color on the format #rrggbb[aa].
3564
+ */
3565
+ SvgRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {
3566
+ var match = /^(#......)(..)?/.exec(fillColor),
3567
+ opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;
3568
+ this.P/*_target*/.m/*setBackground*/(match[1], opacity);
3569
+ };
3570
+
3571
+ /**
3572
+ * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.
3573
+ * @param {string} color Fill color on format #xxxxxx.
3574
+ */
3575
+ SvgRenderer__prototype.M/*beginShape*/ = function beginShape (color) {
3576
+ this.B/*_path*/ = this.C/*_pathsByColor*/[color] || (this.C/*_pathsByColor*/[color] = new SvgPath());
3577
+ };
3578
+
3579
+ /**
3580
+ * Marks the end of the currently drawn shape.
3581
+ */
3582
+ SvgRenderer__prototype.N/*endShape*/ = function endShape () { };
3583
+
3584
+ /**
3585
+ * Adds a polygon with the current fill color to the SVG.
3586
+ * @param points An array of Point objects.
3587
+ */
3588
+ SvgRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {
3589
+ this.B/*_path*/.g/*addPolygon*/(points);
3590
+ };
3591
+
3592
+ /**
3593
+ * Adds a circle with the current fill color to the SVG.
3594
+ * @param {Point} point The upper left corner of the circle bounding box.
3595
+ * @param {number} diameter The diameter of the circle.
3596
+ * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
3597
+ */
3598
+ SvgRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
3599
+ this.B/*_path*/.h/*addCircle*/(point, diameter, counterClockwise);
3600
+ };
3601
+
3602
+ /**
3603
+ * Called when the icon has been completely drawn.
3604
+ */
3605
+ SvgRenderer__prototype.finish = function finish () {
3606
+ var this$1$1 = this;
3607
+
3608
+ var pathsByColor = this.C/*_pathsByColor*/;
3609
+ for (var color in pathsByColor) {
3610
+ // hasOwnProperty cannot be shadowed in pathsByColor
3611
+ // eslint-disable-next-line no-prototype-builtins
3612
+ if (pathsByColor.hasOwnProperty(color)) {
3613
+ this$1$1.P/*_target*/.R/*appendPath*/(color, pathsByColor[color].A/*dataString*/);
3614
+ }
3615
+ }
3616
+ };
3617
+
3618
+ var SVG_CONSTANTS = {
3619
+ S/*XMLNS*/: "http://www.w3.org/2000/svg",
3620
+ T/*WIDTH*/: "width",
3621
+ U/*HEIGHT*/: "height",
3622
+ };
3623
+
3624
+ /**
3625
+ * Renderer producing SVG output.
3626
+ */
3627
+ function SvgWriter(iconSize) {
3628
+ /**
3629
+ * @type {number}
3630
+ */
3631
+ this.k/*iconSize*/ = iconSize;
3632
+
3633
+ /**
3634
+ * @type {string}
3635
+ * @private
3636
+ */
3637
+ this.D/*_s*/ =
3638
+ '<svg xmlns="' + SVG_CONSTANTS.S/*XMLNS*/ + '" width="' +
3639
+ iconSize + '" height="' + iconSize + '" viewBox="0 0 ' +
3640
+ iconSize + ' ' + iconSize + '">';
3641
+ }
3642
+ var SvgWriter__prototype = SvgWriter.prototype;
3643
+
3644
+ /**
3645
+ * Fills the background with the specified color.
3646
+ * @param {string} fillColor Fill color on the format #rrggbb.
3647
+ * @param {number} opacity Opacity in the range [0.0, 1.0].
3648
+ */
3649
+ SvgWriter__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {
3650
+ if (opacity) {
3651
+ this.D/*_s*/ += '<rect width="100%" height="100%" fill="' +
3652
+ fillColor + '" opacity="' + opacity.toFixed(2) + '"/>';
3653
+ }
3654
+ };
3655
+
3656
+ /**
3657
+ * Writes a path to the SVG string.
3658
+ * @param {string} color Fill color on format #rrggbb.
3659
+ * @param {string} dataString The SVG path data string.
3660
+ */
3661
+ SvgWriter__prototype.R/*appendPath*/ = function appendPath (color, dataString) {
3662
+ this.D/*_s*/ += '<path fill="' + color + '" d="' + dataString + '"/>';
3663
+ };
3664
+
3665
+ /**
3666
+ * Gets the rendered image as an SVG string.
3667
+ */
3668
+ SvgWriter__prototype.toString = function toString () {
3669
+ return this.D/*_s*/ + "</svg>";
3670
+ };
3671
+
3672
+ /**
3673
+ * Draws an identicon as an SVG string.
3674
+ * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.
3675
+ * @param {number} size - Icon size in pixels.
3676
+ * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3677
+ * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
3678
+ * specified in place of a configuration object.
3679
+ * @returns {string} SVG string
3680
+ */
3681
+ function toSvg(hashOrValue, size, config) {
3682
+ var writer = new SvgWriter(size);
3683
+ iconGenerator(new SvgRenderer(writer),
3684
+ isValidHash(hashOrValue) || computeHash(hashOrValue),
3685
+ config);
3686
+ return writer.toString();
3687
+ }
3688
+
3689
+ /**
3690
+ * Creates a new element and adds it to the specified parent.
3691
+ * @param {Element} parentNode
3692
+ * @param {string} name
3693
+ * @param {...(string|number)} keyValuePairs
3694
+ */
3695
+ function SvgElement_append(parentNode, name) {
3696
+ var keyValuePairs = [], len = arguments.length - 2;
3697
+ while ( len-- > 0 ) keyValuePairs[ len ] = arguments[ len + 2 ];
3698
+
3699
+ var el = document.createElementNS(SVG_CONSTANTS.S/*XMLNS*/, name);
3700
+
3701
+ for (var i = 0; i + 1 < keyValuePairs.length; i += 2) {
3702
+ el.setAttribute(
3703
+ /** @type {string} */(keyValuePairs[i]),
3704
+ /** @type {string} */(keyValuePairs[i + 1])
3705
+ );
3706
+ }
3707
+
3708
+ parentNode.appendChild(el);
3709
+ }
3710
+
3711
+
3712
+ /**
3713
+ * Renderer producing SVG output.
3714
+ */
3715
+ function SvgElement(element) {
3716
+ // Don't use the clientWidth and clientHeight properties on SVG elements
3717
+ // since Firefox won't serve a proper value of these properties on SVG
3718
+ // elements (https://bugzilla.mozilla.org/show_bug.cgi?id=874811)
3719
+ // Instead use 100px as a hardcoded size (the svg viewBox will rescale
3720
+ // the icon to the correct dimensions)
3721
+ var iconSize = this.k/*iconSize*/ = Math.min(
3722
+ (Number(element.getAttribute(SVG_CONSTANTS.T/*WIDTH*/)) || 100),
3723
+ (Number(element.getAttribute(SVG_CONSTANTS.U/*HEIGHT*/)) || 100)
3724
+ );
3725
+
3726
+ /**
3727
+ * @type {Element}
3728
+ * @private
3729
+ */
3730
+ this.V/*_el*/ = element;
3731
+
3732
+ // Clear current SVG child elements
3733
+ while (element.firstChild) {
3734
+ element.removeChild(element.firstChild);
3735
+ }
3736
+
3737
+ // Set viewBox attribute to ensure the svg scales nicely.
3738
+ element.setAttribute("viewBox", "0 0 " + iconSize + " " + iconSize);
3739
+ element.setAttribute("preserveAspectRatio", "xMidYMid meet");
3740
+ }
3741
+ var SvgElement__prototype = SvgElement.prototype;
3742
+
3743
+ /**
3744
+ * Fills the background with the specified color.
3745
+ * @param {string} fillColor Fill color on the format #rrggbb.
3746
+ * @param {number} opacity Opacity in the range [0.0, 1.0].
3747
+ */
3748
+ SvgElement__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {
3749
+ if (opacity) {
3750
+ SvgElement_append(this.V/*_el*/, "rect",
3751
+ SVG_CONSTANTS.T/*WIDTH*/, "100%",
3752
+ SVG_CONSTANTS.U/*HEIGHT*/, "100%",
3753
+ "fill", fillColor,
3754
+ "opacity", opacity);
3755
+ }
3756
+ };
3757
+
3758
+ /**
3759
+ * Appends a path to the SVG element.
3760
+ * @param {string} color Fill color on format #xxxxxx.
3761
+ * @param {string} dataString The SVG path data string.
3762
+ */
3763
+ SvgElement__prototype.R/*appendPath*/ = function appendPath (color, dataString) {
3764
+ SvgElement_append(this.V/*_el*/, "path",
3765
+ "fill", color,
3766
+ "d", dataString);
3767
+ };
3768
+
3769
+ /**
3770
+ * Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.
3771
+ */
3772
+ function updateAll() {
3773
+ if (documentQuerySelectorAll) {
3774
+ update(ICON_SELECTOR);
3775
+ }
3776
+ }
3777
+
3778
+ /**
3779
+ * Updates the identicon in the specified `<canvas>` or `<svg>` elements.
3780
+ * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3781
+ * `<svg>` or `<canvas>`, or a CSS selector to such an element.
3782
+ * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3783
+ * `data-jdenticon-value` attribute will be evaluated.
3784
+ * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3785
+ * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
3786
+ * specified in place of a configuration object.
3787
+ */
3788
+ function update(el, hashOrValue, config) {
3789
+ renderDomElement(el, hashOrValue, config, function (el, iconType) {
3790
+ if (iconType) {
3791
+ return iconType == ICON_TYPE_SVG ?
3792
+ new SvgRenderer(new SvgElement(el)) :
3793
+ new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext("2d"));
3794
+ }
3795
+ });
3796
+ }
3797
+
3798
+ /**
3799
+ * Updates the identicon in the specified `<canvas>` elements.
3800
+ * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3801
+ * `<canvas>`, or a CSS selector to such an element.
3802
+ * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3803
+ * `data-jdenticon-value` attribute will be evaluated.
3804
+ * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3805
+ * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
3806
+ * specified in place of a configuration object.
3807
+ */
3808
+ function updateCanvas(el, hashOrValue, config) {
3809
+ renderDomElement(el, hashOrValue, config, function (el, iconType) {
3810
+ if (iconType == ICON_TYPE_CANVAS) {
3811
+ return new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext("2d"));
3812
+ }
3813
+ });
3814
+ }
3815
+
3816
+ /**
3817
+ * Updates the identicon in the specified `<svg>` elements.
3818
+ * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3819
+ * `<svg>`, or a CSS selector to such an element.
3820
+ * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3821
+ * `data-jdenticon-value` attribute will be evaluated.
3822
+ * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3823
+ * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
3824
+ * specified in place of a configuration object.
3825
+ */
3826
+ function updateSvg(el, hashOrValue, config) {
3827
+ renderDomElement(el, hashOrValue, config, function (el, iconType) {
3828
+ if (iconType == ICON_TYPE_SVG) {
3829
+ return new SvgRenderer(new SvgElement(el));
3830
+ }
3831
+ });
3832
+ }
3833
+
3834
+ /**
3835
+ * Updates the identicon in the specified canvas or svg elements.
3836
+ * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3837
+ * `<svg>` or `<canvas>`, or a CSS selector to such an element.
3838
+ * @param {*} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3839
+ * `data-jdenticon-value` attribute will be evaluated.
3840
+ * @param {Object|number|undefined} config
3841
+ * @param {function(Element,number):Renderer} rendererFactory - Factory function for creating an icon renderer.
3842
+ */
3843
+ function renderDomElement(el, hashOrValue, config, rendererFactory) {
3844
+ if (typeof el === "string") {
3845
+ if (documentQuerySelectorAll) {
3846
+ var elements = documentQuerySelectorAll(el);
3847
+ for (var i = 0; i < elements.length; i++) {
3848
+ renderDomElement(elements[i], hashOrValue, config, rendererFactory);
3849
+ }
3850
+ }
3851
+ return;
3852
+ }
3853
+
3854
+ // Hash selection. The result from getValidHash or computeHash is
3855
+ // accepted as a valid hash.
3856
+ var hash =
3857
+ // 1. Explicit valid hash
3858
+ isValidHash(hashOrValue) ||
3859
+
3860
+ // 2. Explicit value (`!= null` catches both null and undefined)
3861
+ hashOrValue != null && computeHash(hashOrValue) ||
3862
+
3863
+ // 3. `data-jdenticon-hash` attribute
3864
+ isValidHash(el.getAttribute(ATTRIBUTES.O/*HASH*/)) ||
3865
+
3866
+ // 4. `data-jdenticon-value` attribute.
3867
+ // We want to treat an empty attribute as an empty value.
3868
+ // Some browsers return empty string even if the attribute
3869
+ // is not specified, so use hasAttribute to determine if
3870
+ // the attribute is specified.
3871
+ el.hasAttribute(ATTRIBUTES.v/*VALUE*/) && computeHash(el.getAttribute(ATTRIBUTES.v/*VALUE*/));
3872
+
3873
+ if (!hash) {
3874
+ // No hash specified. Don't render an icon.
3875
+ return;
3876
+ }
3877
+
3878
+ var renderer = rendererFactory(el, getIdenticonType(el));
3879
+ if (renderer) {
3880
+ // Draw icon
3881
+ iconGenerator(renderer, hash, config);
3882
+ el[IS_RENDERED_PROPERTY] = true;
3883
+ }
3884
+ }
3885
+
3886
+ // This file is compiled to dist/jdenticon-module.js
3887
+
3888
+ var jdenticon = updateAll;
3889
+
3890
+ defineConfigProperty(jdenticon);
3891
+
3892
+ // Export public API
3893
+ jdenticon["configure"] = configure;
3894
+ jdenticon["drawIcon"] = drawIcon;
3895
+ jdenticon["toSvg"] = toSvg;
3896
+ jdenticon["update"] = update;
3897
+ jdenticon["updateCanvas"] = updateCanvas;
3898
+ jdenticon["updateSvg"] = updateSvg;
3899
+
3900
+ /**
3901
+ * Specifies the version of the Jdenticon package in use.
3902
+ * @type {string}
3903
+ */
3904
+ jdenticon["version"] = "3.3.0";
3905
+
3906
+ /**
3907
+ * Specifies which bundle of Jdenticon that is used.
3908
+ * @type {string}
3909
+ */
3910
+ jdenticon["bundle"] = "browser-cjs";
3911
+
3912
+ jdenticonModule = jdenticon;
3913
+
3914
+ return jdenticonModule;
2764
3915
  }
2765
3916
 
2766
- /**
2767
- * Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself,
2768
- * but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.
2769
- */
2770
- function Transform(x, y, size, rotation) {
2771
- this.q/*_x*/ = x;
2772
- this.t/*_y*/ = y;
2773
- this.I/*_size*/ = size;
2774
- this.Z/*_rotation*/ = rotation;
2775
- }
2776
-
2777
- /**
2778
- * Transforms the specified point based on the translation and rotation specification for this Transform.
2779
- * @param {number} x x-coordinate
2780
- * @param {number} y y-coordinate
2781
- * @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.
2782
- * @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.
2783
- */
2784
- Transform.prototype.J/*transformIconPoint*/ = function transformIconPoint (x, y, w, h) {
2785
- var right = this.q/*_x*/ + this.I/*_size*/,
2786
- bottom = this.t/*_y*/ + this.I/*_size*/,
2787
- rotation = this.Z/*_rotation*/;
2788
- return rotation === 1 ? new Point(right - y - (h || 0), this.t/*_y*/ + x) :
2789
- rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :
2790
- rotation === 3 ? new Point(this.q/*_x*/ + y, bottom - x - (w || 0)) :
2791
- new Point(this.q/*_x*/ + x, this.t/*_y*/ + y);
2792
- };
2793
-
2794
- var NO_TRANSFORM = new Transform(0, 0, 0, 0);
2795
-
2796
-
2797
-
2798
- /**
2799
- * Provides helper functions for rendering common basic shapes.
2800
- */
2801
- function Graphics(renderer) {
2802
- /**
2803
- * @type {Renderer}
2804
- * @private
2805
- */
2806
- this.K/*_renderer*/ = renderer;
2807
-
2808
- /**
2809
- * @type {Transform}
2810
- */
2811
- this.u/*currentTransform*/ = NO_TRANSFORM;
2812
- }
2813
- var Graphics__prototype = Graphics.prototype;
2814
-
2815
- /**
2816
- * Adds a polygon to the underlying renderer.
2817
- * @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]
2818
- * @param {boolean=} invert Specifies if the polygon will be inverted.
2819
- */
2820
- Graphics__prototype.g/*addPolygon*/ = function addPolygon (points, invert) {
2821
- var this$1$1 = this;
2822
-
2823
- var di = invert ? -2 : 2,
2824
- transformedPoints = [];
2825
-
2826
- for (var i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {
2827
- transformedPoints.push(this$1$1.u/*currentTransform*/.J/*transformIconPoint*/(points[i], points[i + 1]));
2828
- }
2829
-
2830
- this.K/*_renderer*/.g/*addPolygon*/(transformedPoints);
2831
- };
2832
-
2833
- /**
2834
- * Adds a polygon to the underlying renderer.
2835
- * Source: http://stackoverflow.com/a/2173084
2836
- * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.
2837
- * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.
2838
- * @param {number} size The size of the ellipse.
2839
- * @param {boolean=} invert Specifies if the ellipse will be inverted.
2840
- */
2841
- Graphics__prototype.h/*addCircle*/ = function addCircle (x, y, size, invert) {
2842
- var p = this.u/*currentTransform*/.J/*transformIconPoint*/(x, y, size, size);
2843
- this.K/*_renderer*/.h/*addCircle*/(p, size, invert);
2844
- };
2845
-
2846
- /**
2847
- * Adds a rectangle to the underlying renderer.
2848
- * @param {number} x The x-coordinate of the upper left corner of the rectangle.
2849
- * @param {number} y The y-coordinate of the upper left corner of the rectangle.
2850
- * @param {number} w The width of the rectangle.
2851
- * @param {number} h The height of the rectangle.
2852
- * @param {boolean=} invert Specifies if the rectangle will be inverted.
2853
- */
2854
- Graphics__prototype.i/*addRectangle*/ = function addRectangle (x, y, w, h, invert) {
2855
- this.g/*addPolygon*/([
2856
- x, y,
2857
- x + w, y,
2858
- x + w, y + h,
2859
- x, y + h
2860
- ], invert);
2861
- };
2862
-
2863
- /**
2864
- * Adds a right triangle to the underlying renderer.
2865
- * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.
2866
- * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.
2867
- * @param {number} w The width of the triangle.
2868
- * @param {number} h The height of the triangle.
2869
- * @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.
2870
- * @param {boolean=} invert Specifies if the triangle will be inverted.
2871
- */
2872
- Graphics__prototype.j/*addTriangle*/ = function addTriangle (x, y, w, h, r, invert) {
2873
- var points = [
2874
- x + w, y,
2875
- x + w, y + h,
2876
- x, y + h,
2877
- x, y
2878
- ];
2879
- points.splice(((r || 0) % 4) * 2, 2);
2880
- this.g/*addPolygon*/(points, invert);
2881
- };
2882
-
2883
- /**
2884
- * Adds a rhombus to the underlying renderer.
2885
- * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.
2886
- * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.
2887
- * @param {number} w The width of the rhombus.
2888
- * @param {number} h The height of the rhombus.
2889
- * @param {boolean=} invert Specifies if the rhombus will be inverted.
2890
- */
2891
- Graphics__prototype.L/*addRhombus*/ = function addRhombus (x, y, w, h, invert) {
2892
- this.g/*addPolygon*/([
2893
- x + w / 2, y,
2894
- x + w, y + h / 2,
2895
- x + w / 2, y + h,
2896
- x, y + h / 2
2897
- ], invert);
2898
- };
2899
-
2900
- /**
2901
- * @param {number} index
2902
- * @param {Graphics} g
2903
- * @param {number} cell
2904
- * @param {number} positionIndex
2905
- */
2906
- function centerShape(index, g, cell, positionIndex) {
2907
- index = index % 14;
2908
-
2909
- var k, m, w, h, inner, outer;
2910
-
2911
- !index ? (
2912
- k = cell * 0.42,
2913
- g.g/*addPolygon*/([
2914
- 0, 0,
2915
- cell, 0,
2916
- cell, cell - k * 2,
2917
- cell - k, cell,
2918
- 0, cell
2919
- ])) :
2920
-
2921
- index == 1 ? (
2922
- w = 0 | (cell * 0.5),
2923
- h = 0 | (cell * 0.8),
2924
-
2925
- g.j/*addTriangle*/(cell - w, 0, w, h, 2)) :
2926
-
2927
- index == 2 ? (
2928
- w = 0 | (cell / 3),
2929
- g.i/*addRectangle*/(w, w, cell - w, cell - w)) :
2930
-
2931
- index == 3 ? (
2932
- inner = cell * 0.1,
2933
- // Use fixed outer border widths in small icons to ensure the border is drawn
2934
- outer =
2935
- cell < 6 ? 1 :
2936
- cell < 8 ? 2 :
2937
- (0 | (cell * 0.25)),
2938
-
2939
- inner =
2940
- inner > 1 ? (0 | inner) : // large icon => truncate decimals
2941
- inner > 0.5 ? 1 : // medium size icon => fixed width
2942
- inner, // small icon => anti-aliased border
2943
-
2944
- g.i/*addRectangle*/(outer, outer, cell - inner - outer, cell - inner - outer)) :
2945
-
2946
- index == 4 ? (
2947
- m = 0 | (cell * 0.15),
2948
- w = 0 | (cell * 0.5),
2949
- g.h/*addCircle*/(cell - w - m, cell - w - m, w)) :
2950
-
2951
- index == 5 ? (
2952
- inner = cell * 0.1,
2953
- outer = inner * 4,
2954
-
2955
- // Align edge to nearest pixel in large icons
2956
- outer > 3 && (outer = 0 | outer),
2957
-
2958
- g.i/*addRectangle*/(0, 0, cell, cell),
2959
- g.g/*addPolygon*/([
2960
- outer, outer,
2961
- cell - inner, outer,
2962
- outer + (cell - outer - inner) / 2, cell - inner
2963
- ], true)) :
2964
-
2965
- index == 6 ?
2966
- g.g/*addPolygon*/([
2967
- 0, 0,
2968
- cell, 0,
2969
- cell, cell * 0.7,
2970
- cell * 0.4, cell * 0.4,
2971
- cell * 0.7, cell,
2972
- 0, cell
2973
- ]) :
2974
-
2975
- index == 7 ?
2976
- g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :
2977
-
2978
- index == 8 ? (
2979
- g.i/*addRectangle*/(0, 0, cell, cell / 2),
2980
- g.i/*addRectangle*/(0, cell / 2, cell / 2, cell / 2),
2981
- g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :
2982
-
2983
- index == 9 ? (
2984
- inner = cell * 0.14,
2985
- // Use fixed outer border widths in small icons to ensure the border is drawn
2986
- outer =
2987
- cell < 4 ? 1 :
2988
- cell < 6 ? 2 :
2989
- (0 | (cell * 0.35)),
2990
-
2991
- inner =
2992
- cell < 8 ? inner : // small icon => anti-aliased border
2993
- (0 | inner), // large icon => truncate decimals
2994
-
2995
- g.i/*addRectangle*/(0, 0, cell, cell),
2996
- g.i/*addRectangle*/(outer, outer, cell - outer - inner, cell - outer - inner, true)) :
2997
-
2998
- index == 10 ? (
2999
- inner = cell * 0.12,
3000
- outer = inner * 3,
3001
-
3002
- g.i/*addRectangle*/(0, 0, cell, cell),
3003
- g.h/*addCircle*/(outer, outer, cell - inner - outer, true)) :
3004
-
3005
- index == 11 ?
3006
- g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :
3007
-
3008
- index == 12 ? (
3009
- m = cell * 0.25,
3010
- g.i/*addRectangle*/(0, 0, cell, cell),
3011
- g.L/*addRhombus*/(m, m, cell - m, cell - m, true)) :
3012
-
3013
- // 13
3014
- (
3015
- !positionIndex && (
3016
- m = cell * 0.4, w = cell * 1.2,
3017
- g.h/*addCircle*/(m, m, w)
3018
- )
3019
- );
3020
- }
3021
-
3022
- /**
3023
- * @param {number} index
3024
- * @param {Graphics} g
3025
- * @param {number} cell
3026
- */
3027
- function outerShape(index, g, cell) {
3028
- index = index % 4;
3029
-
3030
- var m;
3031
-
3032
- !index ?
3033
- g.j/*addTriangle*/(0, 0, cell, cell, 0) :
3034
-
3035
- index == 1 ?
3036
- g.j/*addTriangle*/(0, cell / 2, cell, cell / 2, 0) :
3037
-
3038
- index == 2 ?
3039
- g.L/*addRhombus*/(0, 0, cell, cell) :
3040
-
3041
- // 3
3042
- (
3043
- m = cell / 6,
3044
- g.h/*addCircle*/(m, m, cell - 2 * m)
3045
- );
3046
- }
3047
-
3048
- /**
3049
- * Gets a set of identicon color candidates for a specified hue and config.
3050
- * @param {number} hue
3051
- * @param {ParsedConfiguration} config
3052
- */
3053
- function colorTheme(hue, config) {
3054
- hue = config.X/*hue*/(hue);
3055
- return [
3056
- // Dark gray
3057
- correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(0)),
3058
- // Mid color
3059
- correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0.5)),
3060
- // Light gray
3061
- correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(1)),
3062
- // Light color
3063
- correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(1)),
3064
- // Dark color
3065
- correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0))
3066
- ];
3067
- }
3068
-
3069
- /**
3070
- * Draws an identicon to a specified renderer.
3071
- * @param {Renderer} renderer
3072
- * @param {string} hash
3073
- * @param {Object|number=} config
3074
- */
3075
- function iconGenerator(renderer, hash, config) {
3076
- var parsedConfig = getConfiguration(config, 0.08);
3077
-
3078
- // Set background color
3079
- if (parsedConfig.H/*backColor*/) {
3080
- renderer.m/*setBackground*/(parsedConfig.H/*backColor*/);
3081
- }
3082
-
3083
- // Calculate padding and round to nearest integer
3084
- var size = renderer.k/*iconSize*/;
3085
- var padding = (0.5 + size * parsedConfig.Y/*iconPadding*/) | 0;
3086
- size -= padding * 2;
3087
-
3088
- var graphics = new Graphics(renderer);
3089
-
3090
- // Calculate cell size and ensure it is an integer
3091
- var cell = 0 | (size / 4);
3092
-
3093
- // Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon
3094
- var x = 0 | (padding + size / 2 - cell * 2);
3095
- var y = 0 | (padding + size / 2 - cell * 2);
3096
-
3097
- function renderShape(colorIndex, shapes, index, rotationIndex, positions) {
3098
- var shapeIndex = parseHex(hash, index, 1);
3099
- var r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;
3100
-
3101
- renderer.M/*beginShape*/(availableColors[selectedColorIndexes[colorIndex]]);
3102
-
3103
- for (var i = 0; i < positions.length; i++) {
3104
- graphics.u/*currentTransform*/ = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);
3105
- shapes(shapeIndex, graphics, cell, i);
3106
- }
3107
-
3108
- renderer.N/*endShape*/();
3109
- }
3110
-
3111
- // AVAILABLE COLORS
3112
- var hue = parseHex(hash, -7) / 0xfffffff,
3113
-
3114
- // Available colors for this icon
3115
- availableColors = colorTheme(hue, parsedConfig),
3116
-
3117
- // The index of the selected colors
3118
- selectedColorIndexes = [];
3119
-
3120
- var index;
3121
-
3122
- function isDuplicate(values) {
3123
- if (values.indexOf(index) >= 0) {
3124
- for (var i = 0; i < values.length; i++) {
3125
- if (selectedColorIndexes.indexOf(values[i]) >= 0) {
3126
- return true;
3127
- }
3128
- }
3129
- }
3130
- }
3131
-
3132
- for (var i = 0; i < 3; i++) {
3133
- index = parseHex(hash, 8 + i, 1) % availableColors.length;
3134
- if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo
3135
- isDuplicate([2, 3])) { // Disallow light gray and light color combo
3136
- index = 1;
3137
- }
3138
- selectedColorIndexes.push(index);
3139
- }
3140
-
3141
- // ACTUAL RENDERING
3142
- // Sides
3143
- renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);
3144
- // Corners
3145
- renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);
3146
- // Center
3147
- renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);
3148
-
3149
- renderer.finish();
3150
- }
3151
-
3152
- /**
3153
- * Computes a SHA1 hash for any value and returns it as a hexadecimal string.
3154
- *
3155
- * This function is optimized for minimal code size and rather short messages.
3156
- *
3157
- * @param {string} message
3158
- */
3159
- function sha1(message) {
3160
- var HASH_SIZE_HALF_BYTES = 40;
3161
- var BLOCK_SIZE_WORDS = 16;
3162
-
3163
- // Variables
3164
- // `var` is used to be able to minimize the number of `var` keywords.
3165
- var i = 0,
3166
- f = 0,
3167
-
3168
- // Use `encodeURI` to UTF8 encode the message without any additional libraries
3169
- // We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky
3170
- // since `unescape` is deprecated.
3171
- urlEncodedMessage = encodeURI(message) + "%80", // trailing '1' bit padding
3172
-
3173
- // This can be changed to a preallocated Uint32Array array for greater performance and larger code size
3174
- data = [],
3175
- dataSize,
3176
-
3177
- hashBuffer = [],
3178
-
3179
- a = 0x67452301,
3180
- b = 0xefcdab89,
3181
- c = ~a,
3182
- d = ~b,
3183
- e = 0xc3d2e1f0,
3184
- hash = [a, b, c, d, e],
3185
-
3186
- blockStartIndex = 0,
3187
- hexHash = "";
3188
-
3189
- /**
3190
- * Rotates the value a specified number of bits to the left.
3191
- * @param {number} value Value to rotate
3192
- * @param {number} shift Bit count to shift.
3193
- */
3194
- function rotl(value, shift) {
3195
- return (value << shift) | (value >>> (32 - shift));
3196
- }
3197
-
3198
- // Message data
3199
- for ( ; i < urlEncodedMessage.length; f++) {
3200
- data[f >> 2] = data[f >> 2] |
3201
- (
3202
- (
3203
- urlEncodedMessage[i] == "%"
3204
- // Percent encoded byte
3205
- ? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)
3206
- // Unencoded byte
3207
- : urlEncodedMessage.charCodeAt(i++)
3208
- )
3209
-
3210
- // Read bytes in reverse order (big endian words)
3211
- << ((3 - (f & 3)) * 8)
3212
- );
3213
- }
3214
-
3215
- // f is now the length of the utf8 encoded message
3216
- // 7 = 8 bytes (64 bit) for message size, -1 to round down
3217
- // >> 6 = integer division with block size
3218
- dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;
3219
-
3220
- // Message size in bits.
3221
- // SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least
3222
- // significant 32 bits are set. -8 is for the '1' bit padding byte.
3223
- data[dataSize - 1] = f * 8 - 8;
3224
-
3225
- // Compute hash
3226
- for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {
3227
- for (i = 0; i < 80; i++) {
3228
- f = rotl(a, 5) + e + (
3229
- // Ch
3230
- i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :
3231
-
3232
- // Parity
3233
- i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :
3234
-
3235
- // Maj
3236
- i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :
3237
-
3238
- // Parity
3239
- (b ^ c ^ d) + 0xca62c1d6
3240
- ) + (
3241
- hashBuffer[i] = i < BLOCK_SIZE_WORDS
3242
- // Bitwise OR is used to coerse `undefined` to 0
3243
- ? (data[blockStartIndex + i] | 0)
3244
- : rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)
3245
- );
3246
-
3247
- e = d;
3248
- d = c;
3249
- c = rotl(b, 30);
3250
- b = a;
3251
- a = f;
3252
- }
3253
-
3254
- hash[0] = a = ((hash[0] + a) | 0);
3255
- hash[1] = b = ((hash[1] + b) | 0);
3256
- hash[2] = c = ((hash[2] + c) | 0);
3257
- hash[3] = d = ((hash[3] + d) | 0);
3258
- hash[4] = e = ((hash[4] + e) | 0);
3259
- }
3260
-
3261
- // Format hex hash
3262
- for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {
3263
- hexHash += (
3264
- (
3265
- // Get word (2^3 half-bytes per word)
3266
- hash[i >> 3] >>>
3267
-
3268
- // Append half-bytes in reverse order
3269
- ((7 - (i & 7)) * 4)
3270
- )
3271
- // Clamp to half-byte
3272
- & 0xf
3273
- ).toString(16);
3274
- }
3275
-
3276
- return hexHash;
3277
- }
3278
-
3279
- /**
3280
- * Inputs a value that might be a valid hash string for Jdenticon and returns it
3281
- * if it is determined valid, otherwise a falsy value is returned.
3282
- */
3283
- function isValidHash(hashCandidate) {
3284
- return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;
3285
- }
3286
-
3287
- /**
3288
- * Computes a hash for the specified value. Currently SHA1 is used. This function
3289
- * always returns a valid hash.
3290
- */
3291
- function computeHash(value) {
3292
- return sha1(value == null ? "" : "" + value);
3293
- }
3294
-
3295
-
3296
-
3297
- /**
3298
- * Renderer redirecting drawing commands to a canvas context.
3299
- * @implements {Renderer}
3300
- */
3301
- function CanvasRenderer(ctx, iconSize) {
3302
- var canvas = ctx.canvas;
3303
- var width = canvas.width;
3304
- var height = canvas.height;
3305
-
3306
- ctx.save();
3307
-
3308
- if (!iconSize) {
3309
- iconSize = Math.min(width, height);
3310
-
3311
- ctx.translate(
3312
- ((width - iconSize) / 2) | 0,
3313
- ((height - iconSize) / 2) | 0);
3314
- }
3315
-
3316
- /**
3317
- * @private
3318
- */
3319
- this.l/*_ctx*/ = ctx;
3320
- this.k/*iconSize*/ = iconSize;
3321
-
3322
- ctx.clearRect(0, 0, iconSize, iconSize);
3323
- }
3324
- var CanvasRenderer__prototype = CanvasRenderer.prototype;
3325
-
3326
- /**
3327
- * Fills the background with the specified color.
3328
- * @param {string} fillColor Fill color on the format #rrggbb[aa].
3329
- */
3330
- CanvasRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {
3331
- var ctx = this.l/*_ctx*/;
3332
- var iconSize = this.k/*iconSize*/;
3333
-
3334
- ctx.fillStyle = toCss3Color(fillColor);
3335
- ctx.fillRect(0, 0, iconSize, iconSize);
3336
- };
3337
-
3338
- /**
3339
- * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.
3340
- * @param {string} fillColor Fill color on format #rrggbb[aa].
3341
- */
3342
- CanvasRenderer__prototype.M/*beginShape*/ = function beginShape (fillColor) {
3343
- var ctx = this.l/*_ctx*/;
3344
- ctx.fillStyle = toCss3Color(fillColor);
3345
- ctx.beginPath();
3346
- };
3347
-
3348
- /**
3349
- * Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.
3350
- */
3351
- CanvasRenderer__prototype.N/*endShape*/ = function endShape () {
3352
- this.l/*_ctx*/.fill();
3353
- };
3354
-
3355
- /**
3356
- * Adds a polygon to the rendering queue.
3357
- * @param points An array of Point objects.
3358
- */
3359
- CanvasRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {
3360
- var ctx = this.l/*_ctx*/;
3361
- ctx.moveTo(points[0].x, points[0].y);
3362
- for (var i = 1; i < points.length; i++) {
3363
- ctx.lineTo(points[i].x, points[i].y);
3364
- }
3365
- ctx.closePath();
3366
- };
3367
-
3368
- /**
3369
- * Adds a circle to the rendering queue.
3370
- * @param {Point} point The upper left corner of the circle bounding box.
3371
- * @param {number} diameter The diameter of the circle.
3372
- * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
3373
- */
3374
- CanvasRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
3375
- var ctx = this.l/*_ctx*/,
3376
- radius = diameter / 2;
3377
- ctx.moveTo(point.x + radius, point.y + radius);
3378
- ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);
3379
- ctx.closePath();
3380
- };
3381
-
3382
- /**
3383
- * Called when the icon has been completely drawn.
3384
- */
3385
- CanvasRenderer__prototype.finish = function finish () {
3386
- this.l/*_ctx*/.restore();
3387
- };
3388
-
3389
- var ICON_TYPE_SVG = 1;
3390
-
3391
- var ICON_TYPE_CANVAS = 2;
3392
-
3393
- var ATTRIBUTES = {
3394
- O/*HASH*/: "data-jdenticon-hash",
3395
- v/*VALUE*/: "data-jdenticon-value"
3396
- };
3397
-
3398
- var IS_RENDERED_PROPERTY = "jdenticonRendered";
3399
-
3400
- var ICON_SELECTOR = "[" + ATTRIBUTES.O/*HASH*/ +"],[" + ATTRIBUTES.v/*VALUE*/ +"]";
3401
-
3402
- var documentQuerySelectorAll = /** @type {!Function} */ (
3403
- typeof document !== "undefined" && document.querySelectorAll.bind(document));
3404
-
3405
- function getIdenticonType(el) {
3406
- if (el) {
3407
- var tagName = el["tagName"];
3408
-
3409
- if (/^svg$/i.test(tagName)) {
3410
- return ICON_TYPE_SVG;
3411
- }
3412
-
3413
- if (/^canvas$/i.test(tagName) && "getContext" in el) {
3414
- return ICON_TYPE_CANVAS;
3415
- }
3416
- }
3417
- }
3418
-
3419
- /**
3420
- * Draws an identicon to a context.
3421
- * @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).
3422
- * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.
3423
- * @param {number} size - Icon size in pixels.
3424
- * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3425
- * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
3426
- * specified in place of a configuration object.
3427
- */
3428
- function drawIcon(ctx, hashOrValue, size, config) {
3429
- if (!ctx) {
3430
- throw new Error("No canvas specified.");
3431
- }
3432
-
3433
- iconGenerator(new CanvasRenderer(ctx, size),
3434
- isValidHash(hashOrValue) || computeHash(hashOrValue),
3435
- config);
3436
-
3437
- var canvas = ctx.canvas;
3438
- if (canvas) {
3439
- canvas[IS_RENDERED_PROPERTY] = true;
3440
- }
3441
- }
3442
-
3443
- /**
3444
- * Prepares a measure to be used as a measure in an SVG path, by
3445
- * rounding the measure to a single decimal. This reduces the file
3446
- * size of the generated SVG with more than 50% in some cases.
3447
- */
3448
- function svgValue(value) {
3449
- return ((value * 10 + 0.5) | 0) / 10;
3450
- }
3451
-
3452
- /**
3453
- * Represents an SVG path element.
3454
- */
3455
- function SvgPath() {
3456
- /**
3457
- * This property holds the data string (path.d) of the SVG path.
3458
- * @type {string}
3459
- */
3460
- this.A/*dataString*/ = "";
3461
- }
3462
- var SvgPath__prototype = SvgPath.prototype;
3463
-
3464
- /**
3465
- * Adds a polygon with the current fill color to the SVG path.
3466
- * @param points An array of Point objects.
3467
- */
3468
- SvgPath__prototype.g/*addPolygon*/ = function addPolygon (points) {
3469
- var dataString = "";
3470
- for (var i = 0; i < points.length; i++) {
3471
- dataString += (i ? "L" : "M") + svgValue(points[i].x) + " " + svgValue(points[i].y);
3472
- }
3473
- this.A/*dataString*/ += dataString + "Z";
3474
- };
3475
-
3476
- /**
3477
- * Adds a circle with the current fill color to the SVG path.
3478
- * @param {Point} point The upper left corner of the circle bounding box.
3479
- * @param {number} diameter The diameter of the circle.
3480
- * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
3481
- */
3482
- SvgPath__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
3483
- var sweepFlag = counterClockwise ? 0 : 1,
3484
- svgRadius = svgValue(diameter / 2),
3485
- svgDiameter = svgValue(diameter),
3486
- svgArc = "a" + svgRadius + "," + svgRadius + " 0 1," + sweepFlag + " ";
3487
-
3488
- this.A/*dataString*/ +=
3489
- "M" + svgValue(point.x) + " " + svgValue(point.y + diameter / 2) +
3490
- svgArc + svgDiameter + ",0" +
3491
- svgArc + (-svgDiameter) + ",0";
3492
- };
3493
-
3494
-
3495
-
3496
- /**
3497
- * Renderer producing SVG output.
3498
- * @implements {Renderer}
3499
- */
3500
- function SvgRenderer(target) {
3501
-
3502
- /**
3503
- * @type {Object.<string,SvgPath>}
3504
- * @private
3505
- */
3506
- this.C/*_pathsByColor*/ = { };
3507
-
3508
- /**
3509
- * @type {SvgElement|SvgWriter}
3510
- * @private
3511
- */
3512
- this.P/*_target*/ = target;
3513
-
3514
- /**
3515
- * @type {number}
3516
- */
3517
- this.k/*iconSize*/ = target.k/*iconSize*/;
3518
- }
3519
- var SvgRenderer__prototype = SvgRenderer.prototype;
3520
-
3521
- /**
3522
- * Fills the background with the specified color.
3523
- * @param {string} fillColor Fill color on the format #rrggbb[aa].
3524
- */
3525
- SvgRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {
3526
- var match = /^(#......)(..)?/.exec(fillColor),
3527
- opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;
3528
- this.P/*_target*/.m/*setBackground*/(match[1], opacity);
3529
- };
3530
-
3531
- /**
3532
- * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.
3533
- * @param {string} color Fill color on format #xxxxxx.
3534
- */
3535
- SvgRenderer__prototype.M/*beginShape*/ = function beginShape (color) {
3536
- this.B/*_path*/ = this.C/*_pathsByColor*/[color] || (this.C/*_pathsByColor*/[color] = new SvgPath());
3537
- };
3538
-
3539
- /**
3540
- * Marks the end of the currently drawn shape.
3541
- */
3542
- SvgRenderer__prototype.N/*endShape*/ = function endShape () { };
3543
-
3544
- /**
3545
- * Adds a polygon with the current fill color to the SVG.
3546
- * @param points An array of Point objects.
3547
- */
3548
- SvgRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {
3549
- this.B/*_path*/.g/*addPolygon*/(points);
3550
- };
3551
-
3552
- /**
3553
- * Adds a circle with the current fill color to the SVG.
3554
- * @param {Point} point The upper left corner of the circle bounding box.
3555
- * @param {number} diameter The diameter of the circle.
3556
- * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
3557
- */
3558
- SvgRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
3559
- this.B/*_path*/.h/*addCircle*/(point, diameter, counterClockwise);
3560
- };
3561
-
3562
- /**
3563
- * Called when the icon has been completely drawn.
3564
- */
3565
- SvgRenderer__prototype.finish = function finish () {
3566
- var this$1$1 = this;
3567
-
3568
- var pathsByColor = this.C/*_pathsByColor*/;
3569
- for (var color in pathsByColor) {
3570
- // hasOwnProperty cannot be shadowed in pathsByColor
3571
- // eslint-disable-next-line no-prototype-builtins
3572
- if (pathsByColor.hasOwnProperty(color)) {
3573
- this$1$1.P/*_target*/.R/*appendPath*/(color, pathsByColor[color].A/*dataString*/);
3574
- }
3575
- }
3576
- };
3577
-
3578
- var SVG_CONSTANTS = {
3579
- S/*XMLNS*/: "http://www.w3.org/2000/svg",
3580
- T/*WIDTH*/: "width",
3581
- U/*HEIGHT*/: "height",
3582
- };
3583
-
3584
- /**
3585
- * Renderer producing SVG output.
3586
- */
3587
- function SvgWriter(iconSize) {
3588
- /**
3589
- * @type {number}
3590
- */
3591
- this.k/*iconSize*/ = iconSize;
3592
-
3593
- /**
3594
- * @type {string}
3595
- * @private
3596
- */
3597
- this.D/*_s*/ =
3598
- '<svg xmlns="' + SVG_CONSTANTS.S/*XMLNS*/ + '" width="' +
3599
- iconSize + '" height="' + iconSize + '" viewBox="0 0 ' +
3600
- iconSize + ' ' + iconSize + '">';
3601
- }
3602
- var SvgWriter__prototype = SvgWriter.prototype;
3603
-
3604
- /**
3605
- * Fills the background with the specified color.
3606
- * @param {string} fillColor Fill color on the format #rrggbb.
3607
- * @param {number} opacity Opacity in the range [0.0, 1.0].
3608
- */
3609
- SvgWriter__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {
3610
- if (opacity) {
3611
- this.D/*_s*/ += '<rect width="100%" height="100%" fill="' +
3612
- fillColor + '" opacity="' + opacity.toFixed(2) + '"/>';
3613
- }
3614
- };
3615
-
3616
- /**
3617
- * Writes a path to the SVG string.
3618
- * @param {string} color Fill color on format #rrggbb.
3619
- * @param {string} dataString The SVG path data string.
3620
- */
3621
- SvgWriter__prototype.R/*appendPath*/ = function appendPath (color, dataString) {
3622
- this.D/*_s*/ += '<path fill="' + color + '" d="' + dataString + '"/>';
3623
- };
3624
-
3625
- /**
3626
- * Gets the rendered image as an SVG string.
3627
- */
3628
- SvgWriter__prototype.toString = function toString () {
3629
- return this.D/*_s*/ + "</svg>";
3630
- };
3631
-
3632
- /**
3633
- * Draws an identicon as an SVG string.
3634
- * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.
3635
- * @param {number} size - Icon size in pixels.
3636
- * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3637
- * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
3638
- * specified in place of a configuration object.
3639
- * @returns {string} SVG string
3640
- */
3641
- function toSvg(hashOrValue, size, config) {
3642
- var writer = new SvgWriter(size);
3643
- iconGenerator(new SvgRenderer(writer),
3644
- isValidHash(hashOrValue) || computeHash(hashOrValue),
3645
- config);
3646
- return writer.toString();
3647
- }
3648
-
3649
- /**
3650
- * Creates a new element and adds it to the specified parent.
3651
- * @param {Element} parentNode
3652
- * @param {string} name
3653
- * @param {...(string|number)} keyValuePairs
3654
- */
3655
- function SvgElement_append(parentNode, name) {
3656
- var keyValuePairs = [], len = arguments.length - 2;
3657
- while ( len-- > 0 ) keyValuePairs[ len ] = arguments[ len + 2 ];
3658
-
3659
- var el = document.createElementNS(SVG_CONSTANTS.S/*XMLNS*/, name);
3660
-
3661
- for (var i = 0; i + 1 < keyValuePairs.length; i += 2) {
3662
- el.setAttribute(
3663
- /** @type {string} */(keyValuePairs[i]),
3664
- /** @type {string} */(keyValuePairs[i + 1])
3665
- );
3666
- }
3667
-
3668
- parentNode.appendChild(el);
3669
- }
3670
-
3671
-
3672
- /**
3673
- * Renderer producing SVG output.
3674
- */
3675
- function SvgElement(element) {
3676
- // Don't use the clientWidth and clientHeight properties on SVG elements
3677
- // since Firefox won't serve a proper value of these properties on SVG
3678
- // elements (https://bugzilla.mozilla.org/show_bug.cgi?id=874811)
3679
- // Instead use 100px as a hardcoded size (the svg viewBox will rescale
3680
- // the icon to the correct dimensions)
3681
- var iconSize = this.k/*iconSize*/ = Math.min(
3682
- (Number(element.getAttribute(SVG_CONSTANTS.T/*WIDTH*/)) || 100),
3683
- (Number(element.getAttribute(SVG_CONSTANTS.U/*HEIGHT*/)) || 100)
3684
- );
3685
-
3686
- /**
3687
- * @type {Element}
3688
- * @private
3689
- */
3690
- this.V/*_el*/ = element;
3691
-
3692
- // Clear current SVG child elements
3693
- while (element.firstChild) {
3694
- element.removeChild(element.firstChild);
3695
- }
3696
-
3697
- // Set viewBox attribute to ensure the svg scales nicely.
3698
- element.setAttribute("viewBox", "0 0 " + iconSize + " " + iconSize);
3699
- element.setAttribute("preserveAspectRatio", "xMidYMid meet");
3700
- }
3701
- var SvgElement__prototype = SvgElement.prototype;
3702
-
3703
- /**
3704
- * Fills the background with the specified color.
3705
- * @param {string} fillColor Fill color on the format #rrggbb.
3706
- * @param {number} opacity Opacity in the range [0.0, 1.0].
3707
- */
3708
- SvgElement__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {
3709
- if (opacity) {
3710
- SvgElement_append(this.V/*_el*/, "rect",
3711
- SVG_CONSTANTS.T/*WIDTH*/, "100%",
3712
- SVG_CONSTANTS.U/*HEIGHT*/, "100%",
3713
- "fill", fillColor,
3714
- "opacity", opacity);
3715
- }
3716
- };
3717
-
3718
- /**
3719
- * Appends a path to the SVG element.
3720
- * @param {string} color Fill color on format #xxxxxx.
3721
- * @param {string} dataString The SVG path data string.
3722
- */
3723
- SvgElement__prototype.R/*appendPath*/ = function appendPath (color, dataString) {
3724
- SvgElement_append(this.V/*_el*/, "path",
3725
- "fill", color,
3726
- "d", dataString);
3727
- };
3728
-
3729
- /**
3730
- * Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.
3731
- */
3732
- function updateAll() {
3733
- if (documentQuerySelectorAll) {
3734
- update(ICON_SELECTOR);
3735
- }
3736
- }
3737
-
3738
- /**
3739
- * Updates the identicon in the specified `<canvas>` or `<svg>` elements.
3740
- * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3741
- * `<svg>` or `<canvas>`, or a CSS selector to such an element.
3742
- * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3743
- * `data-jdenticon-value` attribute will be evaluated.
3744
- * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3745
- * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
3746
- * specified in place of a configuration object.
3747
- */
3748
- function update(el, hashOrValue, config) {
3749
- renderDomElement(el, hashOrValue, config, function (el, iconType) {
3750
- if (iconType) {
3751
- return iconType == ICON_TYPE_SVG ?
3752
- new SvgRenderer(new SvgElement(el)) :
3753
- new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext("2d"));
3754
- }
3755
- });
3756
- }
3757
-
3758
- /**
3759
- * Updates the identicon in the specified `<canvas>` elements.
3760
- * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3761
- * `<canvas>`, or a CSS selector to such an element.
3762
- * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3763
- * `data-jdenticon-value` attribute will be evaluated.
3764
- * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3765
- * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
3766
- * specified in place of a configuration object.
3767
- */
3768
- function updateCanvas(el, hashOrValue, config) {
3769
- renderDomElement(el, hashOrValue, config, function (el, iconType) {
3770
- if (iconType == ICON_TYPE_CANVAS) {
3771
- return new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext("2d"));
3772
- }
3773
- });
3774
- }
3775
-
3776
- /**
3777
- * Updates the identicon in the specified `<svg>` elements.
3778
- * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3779
- * `<svg>`, or a CSS selector to such an element.
3780
- * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3781
- * `data-jdenticon-value` attribute will be evaluated.
3782
- * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
3783
- * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
3784
- * specified in place of a configuration object.
3785
- */
3786
- function updateSvg(el, hashOrValue, config) {
3787
- renderDomElement(el, hashOrValue, config, function (el, iconType) {
3788
- if (iconType == ICON_TYPE_SVG) {
3789
- return new SvgRenderer(new SvgElement(el));
3790
- }
3791
- });
3792
- }
3793
-
3794
- /**
3795
- * Updates the identicon in the specified canvas or svg elements.
3796
- * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
3797
- * `<svg>` or `<canvas>`, or a CSS selector to such an element.
3798
- * @param {*} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
3799
- * `data-jdenticon-value` attribute will be evaluated.
3800
- * @param {Object|number|undefined} config
3801
- * @param {function(Element,number):Renderer} rendererFactory - Factory function for creating an icon renderer.
3802
- */
3803
- function renderDomElement(el, hashOrValue, config, rendererFactory) {
3804
- if (typeof el === "string") {
3805
- if (documentQuerySelectorAll) {
3806
- var elements = documentQuerySelectorAll(el);
3807
- for (var i = 0; i < elements.length; i++) {
3808
- renderDomElement(elements[i], hashOrValue, config, rendererFactory);
3809
- }
3810
- }
3811
- return;
3812
- }
3813
-
3814
- // Hash selection. The result from getValidHash or computeHash is
3815
- // accepted as a valid hash.
3816
- var hash =
3817
- // 1. Explicit valid hash
3818
- isValidHash(hashOrValue) ||
3819
-
3820
- // 2. Explicit value (`!= null` catches both null and undefined)
3821
- hashOrValue != null && computeHash(hashOrValue) ||
3822
-
3823
- // 3. `data-jdenticon-hash` attribute
3824
- isValidHash(el.getAttribute(ATTRIBUTES.O/*HASH*/)) ||
3825
-
3826
- // 4. `data-jdenticon-value` attribute.
3827
- // We want to treat an empty attribute as an empty value.
3828
- // Some browsers return empty string even if the attribute
3829
- // is not specified, so use hasAttribute to determine if
3830
- // the attribute is specified.
3831
- el.hasAttribute(ATTRIBUTES.v/*VALUE*/) && computeHash(el.getAttribute(ATTRIBUTES.v/*VALUE*/));
3832
-
3833
- if (!hash) {
3834
- // No hash specified. Don't render an icon.
3835
- return;
3836
- }
3837
-
3838
- var renderer = rendererFactory(el, getIdenticonType(el));
3839
- if (renderer) {
3840
- // Draw icon
3841
- iconGenerator(renderer, hash, config);
3842
- el[IS_RENDERED_PROPERTY] = true;
3843
- }
3844
- }
3845
-
3846
- // This file is compiled to dist/jdenticon-module.js
3847
-
3848
- var jdenticon = updateAll;
3849
-
3850
- defineConfigProperty(jdenticon);
3851
-
3852
- // Export public API
3853
- jdenticon["configure"] = configure;
3854
- jdenticon["drawIcon"] = drawIcon;
3855
- jdenticon["toSvg"] = toSvg;
3856
- jdenticon["update"] = update;
3857
- jdenticon["updateCanvas"] = updateCanvas;
3858
- jdenticon["updateSvg"] = updateSvg;
3859
-
3860
- /**
3861
- * Specifies the version of the Jdenticon package in use.
3862
- * @type {string}
3863
- */
3864
- jdenticon["version"] = "3.3.0";
3865
-
3866
- /**
3867
- * Specifies which bundle of Jdenticon that is used.
3868
- * @type {string}
3869
- */
3870
- jdenticon["bundle"] = "browser-cjs";
3871
-
3872
- var jdenticonModule = jdenticon;
3917
+ var jdenticonModuleExports = requireJdenticonModule();
3873
3918
 
3874
3919
  const DEFAULT_CONFIG = {
3875
3920
  keycloak: {
@@ -3895,6 +3940,8 @@ const DEFAULT_CONFIG = {
3895
3940
  isLoading: true,
3896
3941
  duration: 800
3897
3942
  },
3943
+ allowedGlobalDomain: '',
3944
+ whitelistedUrls: ''
3898
3945
  };
3899
3946
  // Fetch config from API
3900
3947
  class ConfigService {
@@ -4009,33 +4056,62 @@ class MenuService {
4009
4056
  }
4010
4057
  const menuService = new MenuService();
4011
4058
 
4012
- const dashButtonCss = "/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */.fa{font-family:var(--fa-style-family,\"Font Awesome 6 Free\");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:\"Font Awesome 6 Free\"}.fa-brands,.fab{font-family:\"Font Awesome 6 Brands\"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0{--fa:\"\\30\"}.fa-1{--fa:\"\\31\"}.fa-2{--fa:\"\\32\"}.fa-3{--fa:\"\\33\"}.fa-4{--fa:\"\\34\"}.fa-5{--fa:\"\\35\"}.fa-6{--fa:\"\\36\"}.fa-7{--fa:\"\\37\"}.fa-8{--fa:\"\\38\"}.fa-9{--fa:\"\\39\"}.fa-fill-drip{--fa:\"\\f576\"}.fa-arrows-to-circle{--fa:\"\\e4bd\"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:\"\\f138\"}.fa-at{--fa:\"\\40\"}.fa-trash-alt,.fa-trash-can{--fa:\"\\f2ed\"}.fa-text-height{--fa:\"\\f034\"}.fa-user-times,.fa-user-xmark{--fa:\"\\f235\"}.fa-stethoscope{--fa:\"\\f0f1\"}.fa-comment-alt,.fa-message{--fa:\"\\f27a\"}.fa-info{--fa:\"\\f129\"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:\"\\f422\"}.fa-explosion{--fa:\"\\e4e9\"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:\"\\f15c\"}.fa-wave-square{--fa:\"\\f83e\"}.fa-ring{--fa:\"\\f70b\"}.fa-building-un{--fa:\"\\e4d9\"}.fa-dice-three{--fa:\"\\f527\"}.fa-calendar-alt,.fa-calendar-days{--fa:\"\\f073\"}.fa-anchor-circle-check{--fa:\"\\e4aa\"}.fa-building-circle-arrow-right{--fa:\"\\e4d1\"}.fa-volleyball,.fa-volleyball-ball{--fa:\"\\f45f\"}.fa-arrows-up-to-line{--fa:\"\\e4c2\"}.fa-sort-desc,.fa-sort-down{--fa:\"\\f0dd\"}.fa-circle-minus,.fa-minus-circle{--fa:\"\\f056\"}.fa-door-open{--fa:\"\\f52b\"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:\"\\f2f5\"}.fa-atom{--fa:\"\\f5d2\"}.fa-soap{--fa:\"\\e06e\"}.fa-heart-music-camera-bolt,.fa-icons{--fa:\"\\f86d\"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:\"\\f539\"}.fa-bridge-circle-check{--fa:\"\\e4c9\"}.fa-pump-medical{--fa:\"\\e06a\"}.fa-fingerprint{--fa:\"\\f577\"}.fa-hand-point-right{--fa:\"\\f0a4\"}.fa-magnifying-glass-location,.fa-search-location{--fa:\"\\f689\"}.fa-forward-step,.fa-step-forward{--fa:\"\\f051\"}.fa-face-smile-beam,.fa-smile-beam{--fa:\"\\f5b8\"}.fa-flag-checkered{--fa:\"\\f11e\"}.fa-football,.fa-football-ball{--fa:\"\\f44e\"}.fa-school-circle-exclamation{--fa:\"\\e56c\"}.fa-crop{--fa:\"\\f125\"}.fa-angle-double-down,.fa-angles-down{--fa:\"\\f103\"}.fa-users-rectangle{--fa:\"\\e594\"}.fa-people-roof{--fa:\"\\e537\"}.fa-people-line{--fa:\"\\e534\"}.fa-beer,.fa-beer-mug-empty{--fa:\"\\f0fc\"}.fa-diagram-predecessor{--fa:\"\\e477\"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:\"\\f176\"}.fa-burn,.fa-fire-flame-simple{--fa:\"\\f46a\"}.fa-male,.fa-person{--fa:\"\\f183\"}.fa-laptop{--fa:\"\\f109\"}.fa-file-csv{--fa:\"\\f6dd\"}.fa-menorah{--fa:\"\\f676\"}.fa-truck-plane{--fa:\"\\e58f\"}.fa-record-vinyl{--fa:\"\\f8d9\"}.fa-face-grin-stars,.fa-grin-stars{--fa:\"\\f587\"}.fa-bong{--fa:\"\\f55c\"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:\"\\f67b\"}.fa-arrow-down-up-across-line{--fa:\"\\e4af\"}.fa-spoon,.fa-utensil-spoon{--fa:\"\\f2e5\"}.fa-jar-wheat{--fa:\"\\e517\"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:\"\\f674\"}.fa-file-circle-exclamation{--fa:\"\\e4eb\"}.fa-circle-h,.fa-hospital-symbol{--fa:\"\\f47e\"}.fa-pager{--fa:\"\\f815\"}.fa-address-book,.fa-contact-book{--fa:\"\\f2b9\"}.fa-strikethrough{--fa:\"\\f0cc\"}.fa-k{--fa:\"\\4b\"}.fa-landmark-flag{--fa:\"\\e51c\"}.fa-pencil,.fa-pencil-alt{--fa:\"\\f303\"}.fa-backward{--fa:\"\\f04a\"}.fa-caret-right{--fa:\"\\f0da\"}.fa-comments{--fa:\"\\f086\"}.fa-file-clipboard,.fa-paste{--fa:\"\\f0ea\"}.fa-code-pull-request{--fa:\"\\e13c\"}.fa-clipboard-list{--fa:\"\\f46d\"}.fa-truck-loading,.fa-truck-ramp-box{--fa:\"\\f4de\"}.fa-user-check{--fa:\"\\f4fc\"}.fa-vial-virus{--fa:\"\\e597\"}.fa-sheet-plastic{--fa:\"\\e571\"}.fa-blog{--fa:\"\\f781\"}.fa-user-ninja{--fa:\"\\f504\"}.fa-person-arrow-up-from-line{--fa:\"\\e539\"}.fa-scroll-torah,.fa-torah{--fa:\"\\f6a0\"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:\"\\f458\"}.fa-toggle-off{--fa:\"\\f204\"}.fa-archive,.fa-box-archive{--fa:\"\\f187\"}.fa-person-drowning{--fa:\"\\e545\"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:\"\\f886\"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:\"\\f58a\"}.fa-spray-can{--fa:\"\\f5bd\"}.fa-truck-monster{--fa:\"\\f63b\"}.fa-w{--fa:\"\\57\"}.fa-earth-africa,.fa-globe-africa{--fa:\"\\f57c\"}.fa-rainbow{--fa:\"\\f75b\"}.fa-circle-notch{--fa:\"\\f1ce\"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:\"\\f3fa\"}.fa-paw{--fa:\"\\f1b0\"}.fa-cloud{--fa:\"\\f0c2\"}.fa-trowel-bricks{--fa:\"\\e58a\"}.fa-face-flushed,.fa-flushed{--fa:\"\\f579\"}.fa-hospital-user{--fa:\"\\f80d\"}.fa-tent-arrow-left-right{--fa:\"\\e57f\"}.fa-gavel,.fa-legal{--fa:\"\\f0e3\"}.fa-binoculars{--fa:\"\\f1e5\"}.fa-microphone-slash{--fa:\"\\f131\"}.fa-box-tissue{--fa:\"\\e05b\"}.fa-motorcycle{--fa:\"\\f21c\"}.fa-bell-concierge,.fa-concierge-bell{--fa:\"\\f562\"}.fa-pen-ruler,.fa-pencil-ruler{--fa:\"\\f5ae\"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:\"\\e068\"}.fa-mars-and-venus-burst{--fa:\"\\e523\"}.fa-caret-square-right,.fa-square-caret-right{--fa:\"\\f152\"}.fa-cut,.fa-scissors{--fa:\"\\f0c4\"}.fa-sun-plant-wilt{--fa:\"\\e57a\"}.fa-toilets-portable{--fa:\"\\e584\"}.fa-hockey-puck{--fa:\"\\f453\"}.fa-table{--fa:\"\\f0ce\"}.fa-magnifying-glass-arrow-right{--fa:\"\\e521\"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:\"\\f566\"}.fa-users-slash{--fa:\"\\e073\"}.fa-clover{--fa:\"\\e139\"}.fa-mail-reply,.fa-reply{--fa:\"\\f3e5\"}.fa-star-and-crescent{--fa:\"\\f699\"}.fa-house-fire{--fa:\"\\e50c\"}.fa-minus-square,.fa-square-minus{--fa:\"\\f146\"}.fa-helicopter{--fa:\"\\f533\"}.fa-compass{--fa:\"\\f14e\"}.fa-caret-square-down,.fa-square-caret-down{--fa:\"\\f150\"}.fa-file-circle-question{--fa:\"\\e4ef\"}.fa-laptop-code{--fa:\"\\f5fc\"}.fa-swatchbook{--fa:\"\\f5c3\"}.fa-prescription-bottle{--fa:\"\\f485\"}.fa-bars,.fa-navicon{--fa:\"\\f0c9\"}.fa-people-group{--fa:\"\\e533\"}.fa-hourglass-3,.fa-hourglass-end{--fa:\"\\f253\"}.fa-heart-broken,.fa-heart-crack{--fa:\"\\f7a9\"}.fa-external-link-square-alt,.fa-square-up-right{--fa:\"\\f360\"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:\"\\f597\"}.fa-film{--fa:\"\\f008\"}.fa-ruler-horizontal{--fa:\"\\f547\"}.fa-people-robbery{--fa:\"\\e536\"}.fa-lightbulb{--fa:\"\\f0eb\"}.fa-caret-left{--fa:\"\\f0d9\"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:\"\\f06a\"}.fa-school-circle-xmark{--fa:\"\\e56d\"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:\"\\f08b\"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:\"\\f13a\"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:\"\\f13e\"}.fa-cloud-showers-heavy{--fa:\"\\f740\"}.fa-headphones-alt,.fa-headphones-simple{--fa:\"\\f58f\"}.fa-sitemap{--fa:\"\\f0e8\"}.fa-circle-dollar-to-slot,.fa-donate{--fa:\"\\f4b9\"}.fa-memory{--fa:\"\\f538\"}.fa-road-spikes{--fa:\"\\e568\"}.fa-fire-burner{--fa:\"\\e4f1\"}.fa-flag{--fa:\"\\f024\"}.fa-hanukiah{--fa:\"\\f6e6\"}.fa-feather{--fa:\"\\f52d\"}.fa-volume-down,.fa-volume-low{--fa:\"\\f027\"}.fa-comment-slash{--fa:\"\\f4b3\"}.fa-cloud-sun-rain{--fa:\"\\f743\"}.fa-compress{--fa:\"\\f066\"}.fa-wheat-alt,.fa-wheat-awn{--fa:\"\\e2cd\"}.fa-ankh{--fa:\"\\f644\"}.fa-hands-holding-child{--fa:\"\\e4fa\"}.fa-asterisk{--fa:\"\\2a\"}.fa-check-square,.fa-square-check{--fa:\"\\f14a\"}.fa-peseta-sign{--fa:\"\\e221\"}.fa-header,.fa-heading{--fa:\"\\f1dc\"}.fa-ghost{--fa:\"\\f6e2\"}.fa-list,.fa-list-squares{--fa:\"\\f03a\"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:\"\\f87b\"}.fa-cart-plus{--fa:\"\\f217\"}.fa-gamepad{--fa:\"\\f11b\"}.fa-circle-dot,.fa-dot-circle{--fa:\"\\f192\"}.fa-dizzy,.fa-face-dizzy{--fa:\"\\f567\"}.fa-egg{--fa:\"\\f7fb\"}.fa-house-medical-circle-xmark{--fa:\"\\e513\"}.fa-campground{--fa:\"\\f6bb\"}.fa-folder-plus{--fa:\"\\f65e\"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:\"\\f1e3\"}.fa-paint-brush,.fa-paintbrush{--fa:\"\\f1fc\"}.fa-lock{--fa:\"\\f023\"}.fa-gas-pump{--fa:\"\\f52f\"}.fa-hot-tub,.fa-hot-tub-person{--fa:\"\\f593\"}.fa-map-location,.fa-map-marked{--fa:\"\\f59f\"}.fa-house-flood-water{--fa:\"\\e50e\"}.fa-tree{--fa:\"\\f1bb\"}.fa-bridge-lock{--fa:\"\\e4cc\"}.fa-sack-dollar{--fa:\"\\f81d\"}.fa-edit,.fa-pen-to-square{--fa:\"\\f044\"}.fa-car-side{--fa:\"\\f5e4\"}.fa-share-alt,.fa-share-nodes{--fa:\"\\f1e0\"}.fa-heart-circle-minus{--fa:\"\\e4ff\"}.fa-hourglass-2,.fa-hourglass-half{--fa:\"\\f252\"}.fa-microscope{--fa:\"\\f610\"}.fa-sink{--fa:\"\\e06d\"}.fa-bag-shopping,.fa-shopping-bag{--fa:\"\\f290\"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:\"\\f881\"}.fa-mitten{--fa:\"\\f7b5\"}.fa-person-rays{--fa:\"\\e54d\"}.fa-users{--fa:\"\\f0c0\"}.fa-eye-slash{--fa:\"\\f070\"}.fa-flask-vial{--fa:\"\\e4f3\"}.fa-hand,.fa-hand-paper{--fa:\"\\f256\"}.fa-om{--fa:\"\\f679\"}.fa-worm{--fa:\"\\e599\"}.fa-house-circle-xmark{--fa:\"\\e50b\"}.fa-plug{--fa:\"\\f1e6\"}.fa-chevron-up{--fa:\"\\f077\"}.fa-hand-spock{--fa:\"\\f259\"}.fa-stopwatch{--fa:\"\\f2f2\"}.fa-face-kiss,.fa-kiss{--fa:\"\\f596\"}.fa-bridge-circle-xmark{--fa:\"\\e4cb\"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:\"\\f589\"}.fa-chess-bishop{--fa:\"\\f43a\"}.fa-face-grin-wink,.fa-grin-wink{--fa:\"\\f58c\"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:\"\\f2a4\"}.fa-road-circle-check{--fa:\"\\e564\"}.fa-dice-five{--fa:\"\\f523\"}.fa-rss-square,.fa-square-rss{--fa:\"\\f143\"}.fa-land-mine-on{--fa:\"\\e51b\"}.fa-i-cursor{--fa:\"\\f246\"}.fa-stamp{--fa:\"\\f5bf\"}.fa-stairs{--fa:\"\\e289\"}.fa-i{--fa:\"\\49\"}.fa-hryvnia,.fa-hryvnia-sign{--fa:\"\\f6f2\"}.fa-pills{--fa:\"\\f484\"}.fa-face-grin-wide,.fa-grin-alt{--fa:\"\\f581\"}.fa-tooth{--fa:\"\\f5c9\"}.fa-v{--fa:\"\\56\"}.fa-bangladeshi-taka-sign{--fa:\"\\e2e6\"}.fa-bicycle{--fa:\"\\f206\"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:\"\\e579\"}.fa-head-side-cough-slash{--fa:\"\\e062\"}.fa-ambulance,.fa-truck-medical{--fa:\"\\f0f9\"}.fa-wheat-awn-circle-exclamation{--fa:\"\\e598\"}.fa-snowman{--fa:\"\\f7d0\"}.fa-mortar-pestle{--fa:\"\\f5a7\"}.fa-road-barrier{--fa:\"\\e562\"}.fa-school{--fa:\"\\f549\"}.fa-igloo{--fa:\"\\f7ae\"}.fa-joint{--fa:\"\\f595\"}.fa-angle-right{--fa:\"\\f105\"}.fa-horse{--fa:\"\\f6f0\"}.fa-q{--fa:\"\\51\"}.fa-g{--fa:\"\\47\"}.fa-notes-medical{--fa:\"\\f481\"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:\"\\f2c9\"}.fa-dong-sign{--fa:\"\\e169\"}.fa-capsules{--fa:\"\\f46b\"}.fa-poo-bolt,.fa-poo-storm{--fa:\"\\f75a\"}.fa-face-frown-open,.fa-frown-open{--fa:\"\\f57a\"}.fa-hand-point-up{--fa:\"\\f0a6\"}.fa-money-bill{--fa:\"\\f0d6\"}.fa-bookmark{--fa:\"\\f02e\"}.fa-align-justify{--fa:\"\\f039\"}.fa-umbrella-beach{--fa:\"\\f5ca\"}.fa-helmet-un{--fa:\"\\e503\"}.fa-bullseye{--fa:\"\\f140\"}.fa-bacon{--fa:\"\\f7e5\"}.fa-hand-point-down{--fa:\"\\f0a7\"}.fa-arrow-up-from-bracket{--fa:\"\\e09a\"}.fa-folder,.fa-folder-blank{--fa:\"\\f07b\"}.fa-file-medical-alt,.fa-file-waveform{--fa:\"\\f478\"}.fa-radiation{--fa:\"\\f7b9\"}.fa-chart-simple{--fa:\"\\e473\"}.fa-mars-stroke{--fa:\"\\f229\"}.fa-vial{--fa:\"\\f492\"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:\"\\f624\"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:\"\\e2ca\"}.fa-e{--fa:\"\\45\"}.fa-pen-alt,.fa-pen-clip{--fa:\"\\f305\"}.fa-bridge-circle-exclamation{--fa:\"\\e4ca\"}.fa-user{--fa:\"\\f007\"}.fa-school-circle-check{--fa:\"\\e56b\"}.fa-dumpster{--fa:\"\\f793\"}.fa-shuttle-van,.fa-van-shuttle{--fa:\"\\f5b6\"}.fa-building-user{--fa:\"\\e4da\"}.fa-caret-square-left,.fa-square-caret-left{--fa:\"\\f191\"}.fa-highlighter{--fa:\"\\f591\"}.fa-key{--fa:\"\\f084\"}.fa-bullhorn{--fa:\"\\f0a1\"}.fa-globe{--fa:\"\\f0ac\"}.fa-synagogue{--fa:\"\\f69b\"}.fa-person-half-dress{--fa:\"\\e548\"}.fa-road-bridge{--fa:\"\\e563\"}.fa-location-arrow{--fa:\"\\f124\"}.fa-c{--fa:\"\\43\"}.fa-tablet-button{--fa:\"\\f10a\"}.fa-building-lock{--fa:\"\\e4d6\"}.fa-pizza-slice{--fa:\"\\f818\"}.fa-money-bill-wave{--fa:\"\\f53a\"}.fa-area-chart,.fa-chart-area{--fa:\"\\f1fe\"}.fa-house-flag{--fa:\"\\e50d\"}.fa-person-circle-minus{--fa:\"\\e540\"}.fa-ban,.fa-cancel{--fa:\"\\f05e\"}.fa-camera-rotate{--fa:\"\\e0d8\"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:\"\\f5d0\"}.fa-star{--fa:\"\\f005\"}.fa-repeat{--fa:\"\\f363\"}.fa-cross{--fa:\"\\f654\"}.fa-box{--fa:\"\\f466\"}.fa-venus-mars{--fa:\"\\f228\"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:\"\\f245\"}.fa-expand-arrows-alt,.fa-maximize{--fa:\"\\f31e\"}.fa-charging-station{--fa:\"\\f5e7\"}.fa-shapes,.fa-triangle-circle-square{--fa:\"\\f61f\"}.fa-random,.fa-shuffle{--fa:\"\\f074\"}.fa-person-running,.fa-running{--fa:\"\\f70c\"}.fa-mobile-retro{--fa:\"\\e527\"}.fa-grip-lines-vertical{--fa:\"\\f7a5\"}.fa-spider{--fa:\"\\f717\"}.fa-hands-bound{--fa:\"\\e4f9\"}.fa-file-invoice-dollar{--fa:\"\\f571\"}.fa-plane-circle-exclamation{--fa:\"\\e556\"}.fa-x-ray{--fa:\"\\f497\"}.fa-spell-check{--fa:\"\\f891\"}.fa-slash{--fa:\"\\f715\"}.fa-computer-mouse,.fa-mouse{--fa:\"\\f8cc\"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:\"\\f090\"}.fa-shop-slash,.fa-store-alt-slash{--fa:\"\\e070\"}.fa-server{--fa:\"\\f233\"}.fa-virus-covid-slash{--fa:\"\\e4a9\"}.fa-shop-lock{--fa:\"\\e4a5\"}.fa-hourglass-1,.fa-hourglass-start{--fa:\"\\f251\"}.fa-blender-phone{--fa:\"\\f6b6\"}.fa-building-wheat{--fa:\"\\e4db\"}.fa-person-breastfeeding{--fa:\"\\e53a\"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:\"\\f2f6\"}.fa-venus{--fa:\"\\f221\"}.fa-passport{--fa:\"\\f5ab\"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:\"\\e68f\"}.fa-heart-pulse,.fa-heartbeat{--fa:\"\\f21e\"}.fa-people-carry,.fa-people-carry-box{--fa:\"\\f4ce\"}.fa-temperature-high{--fa:\"\\f769\"}.fa-microchip{--fa:\"\\f2db\"}.fa-crown{--fa:\"\\f521\"}.fa-weight-hanging{--fa:\"\\f5cd\"}.fa-xmarks-lines{--fa:\"\\e59a\"}.fa-file-prescription{--fa:\"\\f572\"}.fa-weight,.fa-weight-scale{--fa:\"\\f496\"}.fa-user-friends,.fa-user-group{--fa:\"\\f500\"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:\"\\f15e\"}.fa-chess-knight{--fa:\"\\f441\"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:\"\\f59b\"}.fa-wheelchair{--fa:\"\\f193\"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:\"\\f0aa\"}.fa-toggle-on{--fa:\"\\f205\"}.fa-person-walking,.fa-walking{--fa:\"\\f554\"}.fa-l{--fa:\"\\4c\"}.fa-fire{--fa:\"\\f06d\"}.fa-bed-pulse,.fa-procedures{--fa:\"\\f487\"}.fa-shuttle-space,.fa-space-shuttle{--fa:\"\\f197\"}.fa-face-laugh,.fa-laugh{--fa:\"\\f599\"}.fa-folder-open{--fa:\"\\f07c\"}.fa-heart-circle-plus{--fa:\"\\e500\"}.fa-code-fork{--fa:\"\\e13b\"}.fa-city{--fa:\"\\f64f\"}.fa-microphone-alt,.fa-microphone-lines{--fa:\"\\f3c9\"}.fa-pepper-hot{--fa:\"\\f816\"}.fa-unlock{--fa:\"\\f09c\"}.fa-colon-sign{--fa:\"\\e140\"}.fa-headset{--fa:\"\\f590\"}.fa-store-slash{--fa:\"\\e071\"}.fa-road-circle-xmark{--fa:\"\\e566\"}.fa-user-minus{--fa:\"\\f503\"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:\"\\f22a\"}.fa-champagne-glasses,.fa-glass-cheers{--fa:\"\\f79f\"}.fa-clipboard{--fa:\"\\f328\"}.fa-house-circle-exclamation{--fa:\"\\e50a\"}.fa-file-arrow-up,.fa-file-upload{--fa:\"\\f574\"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:\"\\f1eb\"}.fa-bath,.fa-bathtub{--fa:\"\\f2cd\"}.fa-underline{--fa:\"\\f0cd\"}.fa-user-edit,.fa-user-pen{--fa:\"\\f4ff\"}.fa-signature{--fa:\"\\f5b7\"}.fa-stroopwafel{--fa:\"\\f551\"}.fa-bold{--fa:\"\\f032\"}.fa-anchor-lock{--fa:\"\\e4ad\"}.fa-building-ngo{--fa:\"\\e4d7\"}.fa-manat-sign{--fa:\"\\e1d5\"}.fa-not-equal{--fa:\"\\f53e\"}.fa-border-style,.fa-border-top-left{--fa:\"\\f853\"}.fa-map-location-dot,.fa-map-marked-alt{--fa:\"\\f5a0\"}.fa-jedi{--fa:\"\\f669\"}.fa-poll,.fa-square-poll-vertical{--fa:\"\\f681\"}.fa-mug-hot{--fa:\"\\f7b6\"}.fa-battery-car,.fa-car-battery{--fa:\"\\f5df\"}.fa-gift{--fa:\"\\f06b\"}.fa-dice-two{--fa:\"\\f528\"}.fa-chess-queen{--fa:\"\\f445\"}.fa-glasses{--fa:\"\\f530\"}.fa-chess-board{--fa:\"\\f43c\"}.fa-building-circle-check{--fa:\"\\e4d2\"}.fa-person-chalkboard{--fa:\"\\e53d\"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:\"\\f22b\"}.fa-hand-back-fist,.fa-hand-rock{--fa:\"\\f255\"}.fa-caret-square-up,.fa-square-caret-up{--fa:\"\\f151\"}.fa-cloud-showers-water{--fa:\"\\e4e4\"}.fa-bar-chart,.fa-chart-bar{--fa:\"\\f080\"}.fa-hands-bubbles,.fa-hands-wash{--fa:\"\\e05e\"}.fa-less-than-equal{--fa:\"\\f537\"}.fa-train{--fa:\"\\f238\"}.fa-eye-low-vision,.fa-low-vision{--fa:\"\\f2a8\"}.fa-crow{--fa:\"\\f520\"}.fa-sailboat{--fa:\"\\e445\"}.fa-window-restore{--fa:\"\\f2d2\"}.fa-plus-square,.fa-square-plus{--fa:\"\\f0fe\"}.fa-torii-gate{--fa:\"\\f6a1\"}.fa-frog{--fa:\"\\f52e\"}.fa-bucket{--fa:\"\\e4cf\"}.fa-image{--fa:\"\\f03e\"}.fa-microphone{--fa:\"\\f130\"}.fa-cow{--fa:\"\\f6c8\"}.fa-caret-up{--fa:\"\\f0d8\"}.fa-screwdriver{--fa:\"\\f54a\"}.fa-folder-closed{--fa:\"\\e185\"}.fa-house-tsunami{--fa:\"\\e515\"}.fa-square-nfi{--fa:\"\\e576\"}.fa-arrow-up-from-ground-water{--fa:\"\\e4b5\"}.fa-glass-martini-alt,.fa-martini-glass{--fa:\"\\f57b\"}.fa-square-binary{--fa:\"\\e69b\"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:\"\\f2ea\"}.fa-columns,.fa-table-columns{--fa:\"\\f0db\"}.fa-lemon{--fa:\"\\f094\"}.fa-head-side-mask{--fa:\"\\e063\"}.fa-handshake{--fa:\"\\f2b5\"}.fa-gem{--fa:\"\\f3a5\"}.fa-dolly,.fa-dolly-box{--fa:\"\\f472\"}.fa-smoking{--fa:\"\\f48d\"}.fa-compress-arrows-alt,.fa-minimize{--fa:\"\\f78c\"}.fa-monument{--fa:\"\\f5a6\"}.fa-snowplow{--fa:\"\\f7d2\"}.fa-angle-double-right,.fa-angles-right{--fa:\"\\f101\"}.fa-cannabis{--fa:\"\\f55f\"}.fa-circle-play,.fa-play-circle{--fa:\"\\f144\"}.fa-tablets{--fa:\"\\f490\"}.fa-ethernet{--fa:\"\\f796\"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:\"\\f153\"}.fa-chair{--fa:\"\\f6c0\"}.fa-check-circle,.fa-circle-check{--fa:\"\\f058\"}.fa-circle-stop,.fa-stop-circle{--fa:\"\\f28d\"}.fa-compass-drafting,.fa-drafting-compass{--fa:\"\\f568\"}.fa-plate-wheat{--fa:\"\\e55a\"}.fa-icicles{--fa:\"\\f7ad\"}.fa-person-shelter{--fa:\"\\e54f\"}.fa-neuter{--fa:\"\\f22c\"}.fa-id-badge{--fa:\"\\f2c1\"}.fa-marker{--fa:\"\\f5a1\"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:\"\\f59a\"}.fa-helicopter-symbol{--fa:\"\\e502\"}.fa-universal-access{--fa:\"\\f29a\"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:\"\\f139\"}.fa-lari-sign{--fa:\"\\e1c8\"}.fa-volcano{--fa:\"\\f770\"}.fa-person-walking-dashed-line-arrow-right{--fa:\"\\e553\"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:\"\\f154\"}.fa-viruses{--fa:\"\\e076\"}.fa-square-person-confined{--fa:\"\\e577\"}.fa-user-tie{--fa:\"\\f508\"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:\"\\f175\"}.fa-tent-arrow-down-to-line{--fa:\"\\e57e\"}.fa-certificate{--fa:\"\\f0a3\"}.fa-mail-reply-all,.fa-reply-all{--fa:\"\\f122\"}.fa-suitcase{--fa:\"\\f0f2\"}.fa-person-skating,.fa-skating{--fa:\"\\f7c5\"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:\"\\f662\"}.fa-camera-retro{--fa:\"\\f083\"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:\"\\f0ab\"}.fa-arrow-right-to-file,.fa-file-import{--fa:\"\\f56f\"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:\"\\f14c\"}.fa-box-open{--fa:\"\\f49e\"}.fa-scroll{--fa:\"\\f70e\"}.fa-spa{--fa:\"\\f5bb\"}.fa-location-pin-lock{--fa:\"\\e51f\"}.fa-pause{--fa:\"\\f04c\"}.fa-hill-avalanche{--fa:\"\\e507\"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:\"\\f2cb\"}.fa-bomb{--fa:\"\\f1e2\"}.fa-registered{--fa:\"\\f25d\"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:\"\\f2bb\"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:\"\\f516\"}.fa-subscript{--fa:\"\\f12c\"}.fa-diamond-turn-right,.fa-directions{--fa:\"\\f5eb\"}.fa-burst{--fa:\"\\e4dc\"}.fa-house-laptop,.fa-laptop-house{--fa:\"\\e066\"}.fa-face-tired,.fa-tired{--fa:\"\\f5c8\"}.fa-money-bills{--fa:\"\\e1f3\"}.fa-smog{--fa:\"\\f75f\"}.fa-crutch{--fa:\"\\f7f7\"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:\"\\f0ee\"}.fa-palette{--fa:\"\\f53f\"}.fa-arrows-turn-right{--fa:\"\\e4c0\"}.fa-vest{--fa:\"\\e085\"}.fa-ferry{--fa:\"\\e4ea\"}.fa-arrows-down-to-people{--fa:\"\\e4b9\"}.fa-seedling,.fa-sprout{--fa:\"\\f4d8\"}.fa-arrows-alt-h,.fa-left-right{--fa:\"\\f337\"}.fa-boxes-packing{--fa:\"\\e4c7\"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:\"\\f0a8\"}.fa-group-arrows-rotate{--fa:\"\\e4f6\"}.fa-bowl-food{--fa:\"\\e4c6\"}.fa-candy-cane{--fa:\"\\f786\"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:\"\\f160\"}.fa-cloud-bolt,.fa-thunderstorm{--fa:\"\\f76c\"}.fa-remove-format,.fa-text-slash{--fa:\"\\f87d\"}.fa-face-smile-wink,.fa-smile-wink{--fa:\"\\f4da\"}.fa-file-word{--fa:\"\\f1c2\"}.fa-file-powerpoint{--fa:\"\\f1c4\"}.fa-arrows-h,.fa-arrows-left-right{--fa:\"\\f07e\"}.fa-house-lock{--fa:\"\\e510\"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:\"\\f0ed\"}.fa-children{--fa:\"\\e4e1\"}.fa-blackboard,.fa-chalkboard{--fa:\"\\f51b\"}.fa-user-alt-slash,.fa-user-large-slash{--fa:\"\\f4fa\"}.fa-envelope-open{--fa:\"\\f2b6\"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:\"\\e05f\"}.fa-mattress-pillow{--fa:\"\\e525\"}.fa-guarani-sign{--fa:\"\\e19a\"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:\"\\f021\"}.fa-fire-extinguisher{--fa:\"\\f134\"}.fa-cruzeiro-sign{--fa:\"\\e152\"}.fa-greater-than-equal{--fa:\"\\f532\"}.fa-shield-alt,.fa-shield-halved{--fa:\"\\f3ed\"}.fa-atlas,.fa-book-atlas{--fa:\"\\f558\"}.fa-virus{--fa:\"\\e074\"}.fa-envelope-circle-check{--fa:\"\\e4e8\"}.fa-layer-group{--fa:\"\\f5fd\"}.fa-arrows-to-dot{--fa:\"\\e4be\"}.fa-archway{--fa:\"\\f557\"}.fa-heart-circle-check{--fa:\"\\e4fd\"}.fa-house-chimney-crack,.fa-house-damage{--fa:\"\\f6f1\"}.fa-file-archive,.fa-file-zipper{--fa:\"\\f1c6\"}.fa-square{--fa:\"\\f0c8\"}.fa-glass-martini,.fa-martini-glass-empty{--fa:\"\\f000\"}.fa-couch{--fa:\"\\f4b8\"}.fa-cedi-sign{--fa:\"\\e0df\"}.fa-italic{--fa:\"\\f033\"}.fa-table-cells-column-lock{--fa:\"\\e678\"}.fa-church{--fa:\"\\f51d\"}.fa-comments-dollar{--fa:\"\\f653\"}.fa-democrat{--fa:\"\\f747\"}.fa-z{--fa:\"\\5a\"}.fa-person-skiing,.fa-skiing{--fa:\"\\f7c9\"}.fa-road-lock{--fa:\"\\e567\"}.fa-a{--fa:\"\\41\"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:\"\\e03f\"}.fa-feather-alt,.fa-feather-pointed{--fa:\"\\f56b\"}.fa-p{--fa:\"\\50\"}.fa-snowflake{--fa:\"\\f2dc\"}.fa-newspaper{--fa:\"\\f1ea\"}.fa-ad,.fa-rectangle-ad{--fa:\"\\f641\"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:\"\\f0a9\"}.fa-filter-circle-xmark{--fa:\"\\e17b\"}.fa-locust{--fa:\"\\e520\"}.fa-sort,.fa-unsorted{--fa:\"\\f0dc\"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:\"\\f0cb\"}.fa-person-dress-burst{--fa:\"\\e544\"}.fa-money-check-alt,.fa-money-check-dollar{--fa:\"\\f53d\"}.fa-vector-square{--fa:\"\\f5cb\"}.fa-bread-slice{--fa:\"\\f7ec\"}.fa-language{--fa:\"\\f1ab\"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:\"\\f598\"}.fa-filter{--fa:\"\\f0b0\"}.fa-question{--fa:\"\\3f\"}.fa-file-signature{--fa:\"\\f573\"}.fa-arrows-alt,.fa-up-down-left-right{--fa:\"\\f0b2\"}.fa-house-chimney-user{--fa:\"\\e065\"}.fa-hand-holding-heart{--fa:\"\\f4be\"}.fa-puzzle-piece{--fa:\"\\f12e\"}.fa-money-check{--fa:\"\\f53c\"}.fa-star-half-alt,.fa-star-half-stroke{--fa:\"\\f5c0\"}.fa-code{--fa:\"\\f121\"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:\"\\f7a0\"}.fa-building-circle-exclamation{--fa:\"\\e4d3\"}.fa-magnifying-glass-chart{--fa:\"\\e522\"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:\"\\f08e\"}.fa-cubes-stacked{--fa:\"\\e4e6\"}.fa-krw,.fa-won,.fa-won-sign{--fa:\"\\f159\"}.fa-virus-covid{--fa:\"\\e4a8\"}.fa-austral-sign{--fa:\"\\e0a9\"}.fa-f{--fa:\"\\46\"}.fa-leaf{--fa:\"\\f06c\"}.fa-road{--fa:\"\\f018\"}.fa-cab,.fa-taxi{--fa:\"\\f1ba\"}.fa-person-circle-plus{--fa:\"\\e541\"}.fa-chart-pie,.fa-pie-chart{--fa:\"\\f200\"}.fa-bolt-lightning{--fa:\"\\e0b7\"}.fa-sack-xmark{--fa:\"\\e56a\"}.fa-file-excel{--fa:\"\\f1c3\"}.fa-file-contract{--fa:\"\\f56c\"}.fa-fish-fins{--fa:\"\\e4f2\"}.fa-building-flag{--fa:\"\\e4d5\"}.fa-face-grin-beam,.fa-grin-beam{--fa:\"\\f582\"}.fa-object-ungroup{--fa:\"\\f248\"}.fa-poop{--fa:\"\\f619\"}.fa-location-pin,.fa-map-marker{--fa:\"\\f041\"}.fa-kaaba{--fa:\"\\f66b\"}.fa-toilet-paper{--fa:\"\\f71e\"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:\"\\f807\"}.fa-eject{--fa:\"\\f052\"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:\"\\f35a\"}.fa-plane-circle-check{--fa:\"\\e555\"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:\"\\f5a5\"}.fa-object-group{--fa:\"\\f247\"}.fa-chart-line,.fa-line-chart{--fa:\"\\f201\"}.fa-mask-ventilator{--fa:\"\\e524\"}.fa-arrow-right{--fa:\"\\f061\"}.fa-map-signs,.fa-signs-post{--fa:\"\\f277\"}.fa-cash-register{--fa:\"\\f788\"}.fa-person-circle-question{--fa:\"\\e542\"}.fa-h{--fa:\"\\48\"}.fa-tarp{--fa:\"\\e57b\"}.fa-screwdriver-wrench,.fa-tools{--fa:\"\\f7d9\"}.fa-arrows-to-eye{--fa:\"\\e4bf\"}.fa-plug-circle-bolt{--fa:\"\\e55b\"}.fa-heart{--fa:\"\\f004\"}.fa-mars-and-venus{--fa:\"\\f224\"}.fa-home-user,.fa-house-user{--fa:\"\\e1b0\"}.fa-dumpster-fire{--fa:\"\\f794\"}.fa-house-crack{--fa:\"\\e3b1\"}.fa-cocktail,.fa-martini-glass-citrus{--fa:\"\\f561\"}.fa-face-surprise,.fa-surprise{--fa:\"\\f5c2\"}.fa-bottle-water{--fa:\"\\e4c5\"}.fa-circle-pause,.fa-pause-circle{--fa:\"\\f28b\"}.fa-toilet-paper-slash{--fa:\"\\e072\"}.fa-apple-alt,.fa-apple-whole{--fa:\"\\f5d1\"}.fa-kitchen-set{--fa:\"\\e51a\"}.fa-r{--fa:\"\\52\"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:\"\\f2ca\"}.fa-cube{--fa:\"\\f1b2\"}.fa-bitcoin-sign{--fa:\"\\e0b4\"}.fa-shield-dog{--fa:\"\\e573\"}.fa-solar-panel{--fa:\"\\f5ba\"}.fa-lock-open{--fa:\"\\f3c1\"}.fa-elevator{--fa:\"\\e16d\"}.fa-money-bill-transfer{--fa:\"\\e528\"}.fa-money-bill-trend-up{--fa:\"\\e529\"}.fa-house-flood-water-circle-arrow-right{--fa:\"\\e50f\"}.fa-poll-h,.fa-square-poll-horizontal{--fa:\"\\f682\"}.fa-circle{--fa:\"\\f111\"}.fa-backward-fast,.fa-fast-backward{--fa:\"\\f049\"}.fa-recycle{--fa:\"\\f1b8\"}.fa-user-astronaut{--fa:\"\\f4fb\"}.fa-plane-slash{--fa:\"\\e069\"}.fa-trademark{--fa:\"\\f25c\"}.fa-basketball,.fa-basketball-ball{--fa:\"\\f434\"}.fa-satellite-dish{--fa:\"\\f7c0\"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:\"\\f35b\"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:\"\\f3cd\"}.fa-volume-high,.fa-volume-up{--fa:\"\\f028\"}.fa-users-rays{--fa:\"\\e593\"}.fa-wallet{--fa:\"\\f555\"}.fa-clipboard-check{--fa:\"\\f46c\"}.fa-file-audio{--fa:\"\\f1c7\"}.fa-burger,.fa-hamburger{--fa:\"\\f805\"}.fa-wrench{--fa:\"\\f0ad\"}.fa-bugs{--fa:\"\\e4d0\"}.fa-rupee,.fa-rupee-sign{--fa:\"\\f156\"}.fa-file-image{--fa:\"\\f1c5\"}.fa-circle-question,.fa-question-circle{--fa:\"\\f059\"}.fa-plane-departure{--fa:\"\\f5b0\"}.fa-handshake-slash{--fa:\"\\e060\"}.fa-book-bookmark{--fa:\"\\e0bb\"}.fa-code-branch{--fa:\"\\f126\"}.fa-hat-cowboy{--fa:\"\\f8c0\"}.fa-bridge{--fa:\"\\e4c8\"}.fa-phone-alt,.fa-phone-flip{--fa:\"\\f879\"}.fa-truck-front{--fa:\"\\e2b7\"}.fa-cat{--fa:\"\\f6be\"}.fa-anchor-circle-exclamation{--fa:\"\\e4ab\"}.fa-truck-field{--fa:\"\\e58d\"}.fa-route{--fa:\"\\f4d7\"}.fa-clipboard-question{--fa:\"\\e4e3\"}.fa-panorama{--fa:\"\\e209\"}.fa-comment-medical{--fa:\"\\f7f5\"}.fa-teeth-open{--fa:\"\\f62f\"}.fa-file-circle-minus{--fa:\"\\e4ed\"}.fa-tags{--fa:\"\\f02c\"}.fa-wine-glass{--fa:\"\\f4e3\"}.fa-fast-forward,.fa-forward-fast{--fa:\"\\f050\"}.fa-face-meh-blank,.fa-meh-blank{--fa:\"\\f5a4\"}.fa-parking,.fa-square-parking{--fa:\"\\f540\"}.fa-house-signal{--fa:\"\\e012\"}.fa-bars-progress,.fa-tasks-alt{--fa:\"\\f828\"}.fa-faucet-drip{--fa:\"\\e006\"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:\"\\f474\"}.fa-ban-smoking,.fa-smoking-ban{--fa:\"\\f54d\"}.fa-terminal{--fa:\"\\f120\"}.fa-mobile-button{--fa:\"\\f10b\"}.fa-house-medical-flag{--fa:\"\\e514\"}.fa-basket-shopping,.fa-shopping-basket{--fa:\"\\f291\"}.fa-tape{--fa:\"\\f4db\"}.fa-bus-alt,.fa-bus-simple{--fa:\"\\f55e\"}.fa-eye{--fa:\"\\f06e\"}.fa-face-sad-cry,.fa-sad-cry{--fa:\"\\f5b3\"}.fa-audio-description{--fa:\"\\f29e\"}.fa-person-military-to-person{--fa:\"\\e54c\"}.fa-file-shield{--fa:\"\\e4f0\"}.fa-user-slash{--fa:\"\\f506\"}.fa-pen{--fa:\"\\f304\"}.fa-tower-observation{--fa:\"\\e586\"}.fa-file-code{--fa:\"\\f1c9\"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:\"\\f012\"}.fa-bus{--fa:\"\\f207\"}.fa-heart-circle-xmark{--fa:\"\\e501\"}.fa-home-lg,.fa-house-chimney{--fa:\"\\e3af\"}.fa-window-maximize{--fa:\"\\f2d0\"}.fa-face-frown,.fa-frown{--fa:\"\\f119\"}.fa-prescription{--fa:\"\\f5b1\"}.fa-shop,.fa-store-alt{--fa:\"\\f54f\"}.fa-floppy-disk,.fa-save{--fa:\"\\f0c7\"}.fa-vihara{--fa:\"\\f6a7\"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:\"\\f515\"}.fa-sort-asc,.fa-sort-up{--fa:\"\\f0de\"}.fa-comment-dots,.fa-commenting{--fa:\"\\f4ad\"}.fa-plant-wilt{--fa:\"\\e5aa\"}.fa-diamond{--fa:\"\\f219\"}.fa-face-grin-squint,.fa-grin-squint{--fa:\"\\f585\"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:\"\\f4c0\"}.fa-chart-diagram{--fa:\"\\e695\"}.fa-bacterium{--fa:\"\\e05a\"}.fa-hand-pointer{--fa:\"\\f25a\"}.fa-drum-steelpan{--fa:\"\\f56a\"}.fa-hand-scissors{--fa:\"\\f257\"}.fa-hands-praying,.fa-praying-hands{--fa:\"\\f684\"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:\"\\f01e\"}.fa-biohazard{--fa:\"\\f780\"}.fa-location,.fa-location-crosshairs{--fa:\"\\f601\"}.fa-mars-double{--fa:\"\\f227\"}.fa-child-dress{--fa:\"\\e59c\"}.fa-users-between-lines{--fa:\"\\e591\"}.fa-lungs-virus{--fa:\"\\e067\"}.fa-face-grin-tears,.fa-grin-tears{--fa:\"\\f588\"}.fa-phone{--fa:\"\\f095\"}.fa-calendar-times,.fa-calendar-xmark{--fa:\"\\f273\"}.fa-child-reaching{--fa:\"\\e59d\"}.fa-head-side-virus{--fa:\"\\e064\"}.fa-user-cog,.fa-user-gear{--fa:\"\\f4fe\"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:\"\\f163\"}.fa-door-closed{--fa:\"\\f52a\"}.fa-shield-virus{--fa:\"\\e06c\"}.fa-dice-six{--fa:\"\\f526\"}.fa-mosquito-net{--fa:\"\\e52c\"}.fa-file-fragment{--fa:\"\\e697\"}.fa-bridge-water{--fa:\"\\e4ce\"}.fa-person-booth{--fa:\"\\f756\"}.fa-text-width{--fa:\"\\f035\"}.fa-hat-wizard{--fa:\"\\f6e8\"}.fa-pen-fancy{--fa:\"\\f5ac\"}.fa-digging,.fa-person-digging{--fa:\"\\f85e\"}.fa-trash{--fa:\"\\f1f8\"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:\"\\f629\"}.fa-book-medical{--fa:\"\\f7e6\"}.fa-poo{--fa:\"\\f2fe\"}.fa-quote-right,.fa-quote-right-alt{--fa:\"\\f10e\"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:\"\\f553\"}.fa-cubes{--fa:\"\\f1b3\"}.fa-divide{--fa:\"\\f529\"}.fa-tenge,.fa-tenge-sign{--fa:\"\\f7d7\"}.fa-headphones{--fa:\"\\f025\"}.fa-hands-holding{--fa:\"\\f4c2\"}.fa-hands-clapping{--fa:\"\\e1a8\"}.fa-republican{--fa:\"\\f75e\"}.fa-arrow-left{--fa:\"\\f060\"}.fa-person-circle-xmark{--fa:\"\\e543\"}.fa-ruler{--fa:\"\\f545\"}.fa-align-left{--fa:\"\\f036\"}.fa-dice-d6{--fa:\"\\f6d1\"}.fa-restroom{--fa:\"\\f7bd\"}.fa-j{--fa:\"\\4a\"}.fa-users-viewfinder{--fa:\"\\e595\"}.fa-file-video{--fa:\"\\f1c8\"}.fa-external-link-alt,.fa-up-right-from-square{--fa:\"\\f35d\"}.fa-table-cells,.fa-th{--fa:\"\\f00a\"}.fa-file-pdf{--fa:\"\\f1c1\"}.fa-bible,.fa-book-bible{--fa:\"\\f647\"}.fa-o{--fa:\"\\4f\"}.fa-medkit,.fa-suitcase-medical{--fa:\"\\f0fa\"}.fa-user-secret{--fa:\"\\f21b\"}.fa-otter{--fa:\"\\f700\"}.fa-female,.fa-person-dress{--fa:\"\\f182\"}.fa-comment-dollar{--fa:\"\\f651\"}.fa-briefcase-clock,.fa-business-time{--fa:\"\\f64a\"}.fa-table-cells-large,.fa-th-large{--fa:\"\\f009\"}.fa-book-tanakh,.fa-tanakh{--fa:\"\\f827\"}.fa-phone-volume,.fa-volume-control-phone{--fa:\"\\f2a0\"}.fa-hat-cowboy-side{--fa:\"\\f8c1\"}.fa-clipboard-user{--fa:\"\\f7f3\"}.fa-child{--fa:\"\\f1ae\"}.fa-lira-sign{--fa:\"\\f195\"}.fa-satellite{--fa:\"\\f7bf\"}.fa-plane-lock{--fa:\"\\e558\"}.fa-tag{--fa:\"\\f02b\"}.fa-comment{--fa:\"\\f075\"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:\"\\f1fd\"}.fa-envelope{--fa:\"\\f0e0\"}.fa-angle-double-up,.fa-angles-up{--fa:\"\\f102\"}.fa-paperclip{--fa:\"\\f0c6\"}.fa-arrow-right-to-city{--fa:\"\\e4b3\"}.fa-ribbon{--fa:\"\\f4d6\"}.fa-lungs{--fa:\"\\f604\"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:\"\\f887\"}.fa-litecoin-sign{--fa:\"\\e1d3\"}.fa-border-none{--fa:\"\\f850\"}.fa-circle-nodes{--fa:\"\\e4e2\"}.fa-parachute-box{--fa:\"\\f4cd\"}.fa-indent{--fa:\"\\f03c\"}.fa-truck-field-un{--fa:\"\\e58e\"}.fa-hourglass,.fa-hourglass-empty{--fa:\"\\f254\"}.fa-mountain{--fa:\"\\f6fc\"}.fa-user-doctor,.fa-user-md{--fa:\"\\f0f0\"}.fa-circle-info,.fa-info-circle{--fa:\"\\f05a\"}.fa-cloud-meatball{--fa:\"\\f73b\"}.fa-camera,.fa-camera-alt{--fa:\"\\f030\"}.fa-square-virus{--fa:\"\\e578\"}.fa-meteor{--fa:\"\\f753\"}.fa-car-on{--fa:\"\\e4dd\"}.fa-sleigh{--fa:\"\\f7cc\"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:\"\\f162\"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:\"\\f4c1\"}.fa-water{--fa:\"\\f773\"}.fa-calendar-check{--fa:\"\\f274\"}.fa-braille{--fa:\"\\f2a1\"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:\"\\f486\"}.fa-landmark{--fa:\"\\f66f\"}.fa-truck{--fa:\"\\f0d1\"}.fa-crosshairs{--fa:\"\\f05b\"}.fa-person-cane{--fa:\"\\e53c\"}.fa-tent{--fa:\"\\e57d\"}.fa-vest-patches{--fa:\"\\e086\"}.fa-check-double{--fa:\"\\f560\"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:\"\\f15d\"}.fa-money-bill-wheat{--fa:\"\\e52a\"}.fa-cookie{--fa:\"\\f563\"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:\"\\f0e2\"}.fa-hard-drive,.fa-hdd{--fa:\"\\f0a0\"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:\"\\f586\"}.fa-dumbbell{--fa:\"\\f44b\"}.fa-list-alt,.fa-rectangle-list{--fa:\"\\f022\"}.fa-tarp-droplet{--fa:\"\\e57c\"}.fa-house-medical-circle-check{--fa:\"\\e511\"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:\"\\f7ca\"}.fa-calendar-plus{--fa:\"\\f271\"}.fa-plane-arrival{--fa:\"\\f5af\"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:\"\\f359\"}.fa-subway,.fa-train-subway{--fa:\"\\f239\"}.fa-chart-gantt{--fa:\"\\e0e4\"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:\"\\e1bc\"}.fa-crop-alt,.fa-crop-simple{--fa:\"\\f565\"}.fa-money-bill-1,.fa-money-bill-alt{--fa:\"\\f3d1\"}.fa-left-long,.fa-long-arrow-alt-left{--fa:\"\\f30a\"}.fa-dna{--fa:\"\\f471\"}.fa-virus-slash{--fa:\"\\e075\"}.fa-minus,.fa-subtract{--fa:\"\\f068\"}.fa-chess{--fa:\"\\f439\"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:\"\\f177\"}.fa-plug-circle-check{--fa:\"\\e55c\"}.fa-street-view{--fa:\"\\f21d\"}.fa-franc-sign{--fa:\"\\e18f\"}.fa-volume-off{--fa:\"\\f026\"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:\"\\f2a3\"}.fa-cog,.fa-gear{--fa:\"\\f013\"}.fa-droplet-slash,.fa-tint-slash{--fa:\"\\f5c7\"}.fa-mosque{--fa:\"\\f678\"}.fa-mosquito{--fa:\"\\e52b\"}.fa-star-of-david{--fa:\"\\f69a\"}.fa-person-military-rifle{--fa:\"\\e54b\"}.fa-cart-shopping,.fa-shopping-cart{--fa:\"\\f07a\"}.fa-vials{--fa:\"\\f493\"}.fa-plug-circle-plus{--fa:\"\\e55f\"}.fa-place-of-worship{--fa:\"\\f67f\"}.fa-grip-vertical{--fa:\"\\f58e\"}.fa-hexagon-nodes{--fa:\"\\e699\"}.fa-arrow-turn-up,.fa-level-up{--fa:\"\\f148\"}.fa-u{--fa:\"\\55\"}.fa-square-root-alt,.fa-square-root-variable{--fa:\"\\f698\"}.fa-clock,.fa-clock-four{--fa:\"\\f017\"}.fa-backward-step,.fa-step-backward{--fa:\"\\f048\"}.fa-pallet{--fa:\"\\f482\"}.fa-faucet{--fa:\"\\e005\"}.fa-baseball-bat-ball{--fa:\"\\f432\"}.fa-s{--fa:\"\\53\"}.fa-timeline{--fa:\"\\e29c\"}.fa-keyboard{--fa:\"\\f11c\"}.fa-caret-down{--fa:\"\\f0d7\"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:\"\\f7f2\"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:\"\\f2c8\"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:\"\\f3cf\"}.fa-plane-up{--fa:\"\\e22d\"}.fa-piggy-bank{--fa:\"\\f4d3\"}.fa-battery-3,.fa-battery-half{--fa:\"\\f242\"}.fa-mountain-city{--fa:\"\\e52e\"}.fa-coins{--fa:\"\\f51e\"}.fa-khanda{--fa:\"\\f66d\"}.fa-sliders,.fa-sliders-h{--fa:\"\\f1de\"}.fa-folder-tree{--fa:\"\\f802\"}.fa-network-wired{--fa:\"\\f6ff\"}.fa-map-pin{--fa:\"\\f276\"}.fa-hamsa{--fa:\"\\f665\"}.fa-cent-sign{--fa:\"\\e3f5\"}.fa-flask{--fa:\"\\f0c3\"}.fa-person-pregnant{--fa:\"\\e31e\"}.fa-wand-sparkles{--fa:\"\\f72b\"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:\"\\f142\"}.fa-ticket{--fa:\"\\f145\"}.fa-power-off{--fa:\"\\f011\"}.fa-long-arrow-alt-right,.fa-right-long{--fa:\"\\f30b\"}.fa-flag-usa{--fa:\"\\f74d\"}.fa-laptop-file{--fa:\"\\e51d\"}.fa-teletype,.fa-tty{--fa:\"\\f1e4\"}.fa-diagram-next{--fa:\"\\e476\"}.fa-person-rifle{--fa:\"\\e54e\"}.fa-house-medical-circle-exclamation{--fa:\"\\e512\"}.fa-closed-captioning{--fa:\"\\f20a\"}.fa-hiking,.fa-person-hiking{--fa:\"\\f6ec\"}.fa-venus-double{--fa:\"\\f226\"}.fa-images{--fa:\"\\f302\"}.fa-calculator{--fa:\"\\f1ec\"}.fa-people-pulling{--fa:\"\\e535\"}.fa-n{--fa:\"\\4e\"}.fa-cable-car,.fa-tram{--fa:\"\\f7da\"}.fa-cloud-rain{--fa:\"\\f73d\"}.fa-building-circle-xmark{--fa:\"\\e4d4\"}.fa-ship{--fa:\"\\f21a\"}.fa-arrows-down-to-line{--fa:\"\\e4b8\"}.fa-download{--fa:\"\\f019\"}.fa-face-grin,.fa-grin{--fa:\"\\f580\"}.fa-backspace,.fa-delete-left{--fa:\"\\f55a\"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:\"\\f1fb\"}.fa-file-circle-check{--fa:\"\\e5a0\"}.fa-forward{--fa:\"\\f04e\"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:\"\\f3ce\"}.fa-face-meh,.fa-meh{--fa:\"\\f11a\"}.fa-align-center{--fa:\"\\f037\"}.fa-book-dead,.fa-book-skull{--fa:\"\\f6b7\"}.fa-drivers-license,.fa-id-card{--fa:\"\\f2c2\"}.fa-dedent,.fa-outdent{--fa:\"\\f03b\"}.fa-heart-circle-exclamation{--fa:\"\\e4fe\"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:\"\\f015\"}.fa-calendar-week{--fa:\"\\f784\"}.fa-laptop-medical{--fa:\"\\f812\"}.fa-b{--fa:\"\\42\"}.fa-file-medical{--fa:\"\\f477\"}.fa-dice-one{--fa:\"\\f525\"}.fa-kiwi-bird{--fa:\"\\f535\"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:\"\\f0ec\"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:\"\\f2f9\"}.fa-cutlery,.fa-utensils{--fa:\"\\f2e7\"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:\"\\f161\"}.fa-mill-sign{--fa:\"\\e1ed\"}.fa-bowl-rice{--fa:\"\\e2eb\"}.fa-skull{--fa:\"\\f54c\"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:\"\\f519\"}.fa-truck-pickup{--fa:\"\\f63c\"}.fa-long-arrow-alt-up,.fa-up-long{--fa:\"\\f30c\"}.fa-stop{--fa:\"\\f04d\"}.fa-code-merge{--fa:\"\\f387\"}.fa-upload{--fa:\"\\f093\"}.fa-hurricane{--fa:\"\\f751\"}.fa-mound{--fa:\"\\e52d\"}.fa-toilet-portable{--fa:\"\\e583\"}.fa-compact-disc{--fa:\"\\f51f\"}.fa-file-arrow-down,.fa-file-download{--fa:\"\\f56d\"}.fa-caravan{--fa:\"\\f8ff\"}.fa-shield-cat{--fa:\"\\e572\"}.fa-bolt,.fa-zap{--fa:\"\\f0e7\"}.fa-glass-water{--fa:\"\\e4f4\"}.fa-oil-well{--fa:\"\\e532\"}.fa-vault{--fa:\"\\e2c5\"}.fa-mars{--fa:\"\\f222\"}.fa-toilet{--fa:\"\\f7d8\"}.fa-plane-circle-xmark{--fa:\"\\e557\"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:\"\\f157\"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:\"\\f158\"}.fa-sun{--fa:\"\\f185\"}.fa-guitar{--fa:\"\\f7a6\"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:\"\\f59c\"}.fa-horse-head{--fa:\"\\f7ab\"}.fa-bore-hole{--fa:\"\\e4c3\"}.fa-industry{--fa:\"\\f275\"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:\"\\f358\"}.fa-arrows-turn-to-dots{--fa:\"\\e4c1\"}.fa-florin-sign{--fa:\"\\e184\"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:\"\\f884\"}.fa-less-than{--fa:\"\\3c\"}.fa-angle-down{--fa:\"\\f107\"}.fa-car-tunnel{--fa:\"\\e4de\"}.fa-head-side-cough{--fa:\"\\e061\"}.fa-grip-lines{--fa:\"\\f7a4\"}.fa-thumbs-down{--fa:\"\\f165\"}.fa-user-lock{--fa:\"\\f502\"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:\"\\f178\"}.fa-anchor-circle-xmark{--fa:\"\\e4ac\"}.fa-ellipsis,.fa-ellipsis-h{--fa:\"\\f141\"}.fa-chess-pawn{--fa:\"\\f443\"}.fa-first-aid,.fa-kit-medical{--fa:\"\\f479\"}.fa-person-through-window{--fa:\"\\e5a9\"}.fa-toolbox{--fa:\"\\f552\"}.fa-hands-holding-circle{--fa:\"\\e4fb\"}.fa-bug{--fa:\"\\f188\"}.fa-credit-card,.fa-credit-card-alt{--fa:\"\\f09d\"}.fa-automobile,.fa-car{--fa:\"\\f1b9\"}.fa-hand-holding-hand{--fa:\"\\e4f7\"}.fa-book-open-reader,.fa-book-reader{--fa:\"\\f5da\"}.fa-mountain-sun{--fa:\"\\e52f\"}.fa-arrows-left-right-to-line{--fa:\"\\e4ba\"}.fa-dice-d20{--fa:\"\\f6cf\"}.fa-truck-droplet{--fa:\"\\e58c\"}.fa-file-circle-xmark{--fa:\"\\e5a1\"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:\"\\e040\"}.fa-medal{--fa:\"\\f5a2\"}.fa-bed{--fa:\"\\f236\"}.fa-h-square,.fa-square-h{--fa:\"\\f0fd\"}.fa-podcast{--fa:\"\\f2ce\"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:\"\\f2c7\"}.fa-bell{--fa:\"\\f0f3\"}.fa-superscript{--fa:\"\\f12b\"}.fa-plug-circle-xmark{--fa:\"\\e560\"}.fa-star-of-life{--fa:\"\\f621\"}.fa-phone-slash{--fa:\"\\f3dd\"}.fa-paint-roller{--fa:\"\\f5aa\"}.fa-hands-helping,.fa-handshake-angle{--fa:\"\\f4c4\"}.fa-location-dot,.fa-map-marker-alt{--fa:\"\\f3c5\"}.fa-file{--fa:\"\\f15b\"}.fa-greater-than{--fa:\"\\3e\"}.fa-person-swimming,.fa-swimmer{--fa:\"\\f5c4\"}.fa-arrow-down{--fa:\"\\f063\"}.fa-droplet,.fa-tint{--fa:\"\\f043\"}.fa-eraser{--fa:\"\\f12d\"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:\"\\f57d\"}.fa-person-burst{--fa:\"\\e53b\"}.fa-dove{--fa:\"\\f4ba\"}.fa-battery-0,.fa-battery-empty{--fa:\"\\f244\"}.fa-socks{--fa:\"\\f696\"}.fa-inbox{--fa:\"\\f01c\"}.fa-section{--fa:\"\\e447\"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:\"\\f625\"}.fa-envelope-open-text{--fa:\"\\f658\"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:\"\\f0f8\"}.fa-wine-bottle{--fa:\"\\f72f\"}.fa-chess-rook{--fa:\"\\f447\"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:\"\\f550\"}.fa-dharmachakra{--fa:\"\\f655\"}.fa-hotdog{--fa:\"\\f80f\"}.fa-blind,.fa-person-walking-with-cane{--fa:\"\\f29d\"}.fa-drum{--fa:\"\\f569\"}.fa-ice-cream{--fa:\"\\f810\"}.fa-heart-circle-bolt{--fa:\"\\e4fc\"}.fa-fax{--fa:\"\\f1ac\"}.fa-paragraph{--fa:\"\\f1dd\"}.fa-check-to-slot,.fa-vote-yea{--fa:\"\\f772\"}.fa-star-half{--fa:\"\\f089\"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:\"\\f468\"}.fa-chain,.fa-link{--fa:\"\\f0c1\"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:\"\\f2a2\"}.fa-tree-city{--fa:\"\\e587\"}.fa-play{--fa:\"\\f04b\"}.fa-font{--fa:\"\\f031\"}.fa-table-cells-row-lock{--fa:\"\\e67a\"}.fa-rupiah-sign{--fa:\"\\e23d\"}.fa-magnifying-glass,.fa-search{--fa:\"\\f002\"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:\"\\f45d\"}.fa-diagnoses,.fa-person-dots-from-line{--fa:\"\\f470\"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:\"\\f82a\"}.fa-naira-sign{--fa:\"\\e1f6\"}.fa-cart-arrow-down{--fa:\"\\f218\"}.fa-walkie-talkie{--fa:\"\\f8ef\"}.fa-file-edit,.fa-file-pen{--fa:\"\\f31c\"}.fa-receipt{--fa:\"\\f543\"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:\"\\f14b\"}.fa-suitcase-rolling{--fa:\"\\f5c1\"}.fa-person-circle-exclamation{--fa:\"\\e53f\"}.fa-chevron-down{--fa:\"\\f078\"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:\"\\f240\"}.fa-skull-crossbones{--fa:\"\\f714\"}.fa-code-compare{--fa:\"\\e13a\"}.fa-list-dots,.fa-list-ul{--fa:\"\\f0ca\"}.fa-school-lock{--fa:\"\\e56f\"}.fa-tower-cell{--fa:\"\\e585\"}.fa-down-long,.fa-long-arrow-alt-down{--fa:\"\\f309\"}.fa-ranking-star{--fa:\"\\e561\"}.fa-chess-king{--fa:\"\\f43f\"}.fa-person-harassing{--fa:\"\\e549\"}.fa-brazilian-real-sign{--fa:\"\\e46c\"}.fa-landmark-alt,.fa-landmark-dome{--fa:\"\\f752\"}.fa-arrow-up{--fa:\"\\f062\"}.fa-television,.fa-tv,.fa-tv-alt{--fa:\"\\f26c\"}.fa-shrimp{--fa:\"\\e448\"}.fa-list-check,.fa-tasks{--fa:\"\\f0ae\"}.fa-jug-detergent{--fa:\"\\e519\"}.fa-circle-user,.fa-user-circle{--fa:\"\\f2bd\"}.fa-user-shield{--fa:\"\\f505\"}.fa-wind{--fa:\"\\f72e\"}.fa-car-burst,.fa-car-crash{--fa:\"\\f5e1\"}.fa-y{--fa:\"\\59\"}.fa-person-snowboarding,.fa-snowboarding{--fa:\"\\f7ce\"}.fa-shipping-fast,.fa-truck-fast{--fa:\"\\f48b\"}.fa-fish{--fa:\"\\f578\"}.fa-user-graduate{--fa:\"\\f501\"}.fa-adjust,.fa-circle-half-stroke{--fa:\"\\f042\"}.fa-clapperboard{--fa:\"\\e131\"}.fa-circle-radiation,.fa-radiation-alt{--fa:\"\\f7ba\"}.fa-baseball,.fa-baseball-ball{--fa:\"\\f433\"}.fa-jet-fighter-up{--fa:\"\\e518\"}.fa-diagram-project,.fa-project-diagram{--fa:\"\\f542\"}.fa-copy{--fa:\"\\f0c5\"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:\"\\f6a9\"}.fa-hand-sparkles{--fa:\"\\e05d\"}.fa-grip,.fa-grip-horizontal{--fa:\"\\f58d\"}.fa-share-from-square,.fa-share-square{--fa:\"\\f14d\"}.fa-child-combatant,.fa-child-rifle{--fa:\"\\e4e0\"}.fa-gun{--fa:\"\\e19b\"}.fa-phone-square,.fa-square-phone{--fa:\"\\f098\"}.fa-add,.fa-plus{--fa:\"\\2b\"}.fa-expand{--fa:\"\\f065\"}.fa-computer{--fa:\"\\e4e5\"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:\"\\f00d\"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:\"\\f047\"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:\"\\f51c\"}.fa-peso-sign{--fa:\"\\e222\"}.fa-building-shield{--fa:\"\\e4d8\"}.fa-baby{--fa:\"\\f77c\"}.fa-users-line{--fa:\"\\e592\"}.fa-quote-left,.fa-quote-left-alt{--fa:\"\\f10d\"}.fa-tractor{--fa:\"\\f722\"}.fa-trash-arrow-up,.fa-trash-restore{--fa:\"\\f829\"}.fa-arrow-down-up-lock{--fa:\"\\e4b0\"}.fa-lines-leaning{--fa:\"\\e51e\"}.fa-ruler-combined{--fa:\"\\f546\"}.fa-copyright{--fa:\"\\f1f9\"}.fa-equals{--fa:\"\\3d\"}.fa-blender{--fa:\"\\f517\"}.fa-teeth{--fa:\"\\f62e\"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:\"\\f20b\"}.fa-map{--fa:\"\\f279\"}.fa-rocket{--fa:\"\\f135\"}.fa-photo-film,.fa-photo-video{--fa:\"\\f87c\"}.fa-folder-minus{--fa:\"\\f65d\"}.fa-hexagon-nodes-bolt{--fa:\"\\e69a\"}.fa-store{--fa:\"\\f54e\"}.fa-arrow-trend-up{--fa:\"\\e098\"}.fa-plug-circle-minus{--fa:\"\\e55e\"}.fa-sign,.fa-sign-hanging{--fa:\"\\f4d9\"}.fa-bezier-curve{--fa:\"\\f55b\"}.fa-bell-slash{--fa:\"\\f1f6\"}.fa-tablet,.fa-tablet-android{--fa:\"\\f3fb\"}.fa-school-flag{--fa:\"\\e56e\"}.fa-fill{--fa:\"\\f575\"}.fa-angle-up{--fa:\"\\f106\"}.fa-drumstick-bite{--fa:\"\\f6d7\"}.fa-holly-berry{--fa:\"\\f7aa\"}.fa-chevron-left{--fa:\"\\f053\"}.fa-bacteria{--fa:\"\\e059\"}.fa-hand-lizard{--fa:\"\\f258\"}.fa-notdef{--fa:\"\\e1fe\"}.fa-disease{--fa:\"\\f7fa\"}.fa-briefcase-medical{--fa:\"\\f469\"}.fa-genderless{--fa:\"\\f22d\"}.fa-chevron-right{--fa:\"\\f054\"}.fa-retweet{--fa:\"\\f079\"}.fa-car-alt,.fa-car-rear{--fa:\"\\f5de\"}.fa-pump-soap{--fa:\"\\e06b\"}.fa-video-slash{--fa:\"\\f4e2\"}.fa-battery-2,.fa-battery-quarter{--fa:\"\\f243\"}.fa-radio{--fa:\"\\f8d7\"}.fa-baby-carriage,.fa-carriage-baby{--fa:\"\\f77d\"}.fa-traffic-light{--fa:\"\\f637\"}.fa-thermometer{--fa:\"\\f491\"}.fa-vr-cardboard{--fa:\"\\f729\"}.fa-hand-middle-finger{--fa:\"\\f806\"}.fa-percent,.fa-percentage{--fa:\"\\25\"}.fa-truck-moving{--fa:\"\\f4df\"}.fa-glass-water-droplet{--fa:\"\\e4f5\"}.fa-display{--fa:\"\\e163\"}.fa-face-smile,.fa-smile{--fa:\"\\f118\"}.fa-thumb-tack,.fa-thumbtack{--fa:\"\\f08d\"}.fa-trophy{--fa:\"\\f091\"}.fa-person-praying,.fa-pray{--fa:\"\\f683\"}.fa-hammer{--fa:\"\\f6e3\"}.fa-hand-peace{--fa:\"\\f25b\"}.fa-rotate,.fa-sync-alt{--fa:\"\\f2f1\"}.fa-spinner{--fa:\"\\f110\"}.fa-robot{--fa:\"\\f544\"}.fa-peace{--fa:\"\\f67c\"}.fa-cogs,.fa-gears{--fa:\"\\f085\"}.fa-warehouse{--fa:\"\\f494\"}.fa-arrow-up-right-dots{--fa:\"\\e4b7\"}.fa-splotch{--fa:\"\\f5bc\"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:\"\\f584\"}.fa-dice-four{--fa:\"\\f524\"}.fa-sim-card{--fa:\"\\f7c4\"}.fa-transgender,.fa-transgender-alt{--fa:\"\\f225\"}.fa-mercury{--fa:\"\\f223\"}.fa-arrow-turn-down,.fa-level-down{--fa:\"\\f149\"}.fa-person-falling-burst{--fa:\"\\e547\"}.fa-award{--fa:\"\\f559\"}.fa-ticket-alt,.fa-ticket-simple{--fa:\"\\f3ff\"}.fa-building{--fa:\"\\f1ad\"}.fa-angle-double-left,.fa-angles-left{--fa:\"\\f100\"}.fa-qrcode{--fa:\"\\f029\"}.fa-clock-rotate-left,.fa-history{--fa:\"\\f1da\"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:\"\\f583\"}.fa-arrow-right-from-file,.fa-file-export{--fa:\"\\f56e\"}.fa-shield,.fa-shield-blank{--fa:\"\\f132\"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:\"\\f885\"}.fa-comment-nodes{--fa:\"\\e696\"}.fa-house-medical{--fa:\"\\e3b2\"}.fa-golf-ball,.fa-golf-ball-tee{--fa:\"\\f450\"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:\"\\f137\"}.fa-house-chimney-window{--fa:\"\\e00d\"}.fa-pen-nib{--fa:\"\\f5ad\"}.fa-tent-arrow-turn-left{--fa:\"\\e580\"}.fa-tents{--fa:\"\\e582\"}.fa-magic,.fa-wand-magic{--fa:\"\\f0d0\"}.fa-dog{--fa:\"\\f6d3\"}.fa-carrot{--fa:\"\\f787\"}.fa-moon{--fa:\"\\f186\"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:\"\\f5ce\"}.fa-cheese{--fa:\"\\f7ef\"}.fa-yin-yang{--fa:\"\\f6ad\"}.fa-music{--fa:\"\\f001\"}.fa-code-commit{--fa:\"\\f386\"}.fa-temperature-low{--fa:\"\\f76b\"}.fa-biking,.fa-person-biking{--fa:\"\\f84a\"}.fa-broom{--fa:\"\\f51a\"}.fa-shield-heart{--fa:\"\\e574\"}.fa-gopuram{--fa:\"\\f664\"}.fa-earth-oceania,.fa-globe-oceania{--fa:\"\\e47b\"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:\"\\f2d3\"}.fa-hashtag{--fa:\"\\23\"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:\"\\f424\"}.fa-oil-can{--fa:\"\\f613\"}.fa-t{--fa:\"\\54\"}.fa-hippo{--fa:\"\\f6ed\"}.fa-chart-column{--fa:\"\\e0e3\"}.fa-infinity{--fa:\"\\f534\"}.fa-vial-circle-check{--fa:\"\\e596\"}.fa-person-arrow-down-to-line{--fa:\"\\e538\"}.fa-voicemail{--fa:\"\\f897\"}.fa-fan{--fa:\"\\f863\"}.fa-person-walking-luggage{--fa:\"\\e554\"}.fa-arrows-alt-v,.fa-up-down{--fa:\"\\f338\"}.fa-cloud-moon-rain{--fa:\"\\f73c\"}.fa-calendar{--fa:\"\\f133\"}.fa-trailer{--fa:\"\\e041\"}.fa-bahai,.fa-haykal{--fa:\"\\f666\"}.fa-sd-card{--fa:\"\\f7c2\"}.fa-dragon{--fa:\"\\f6d5\"}.fa-shoe-prints{--fa:\"\\f54b\"}.fa-circle-plus,.fa-plus-circle{--fa:\"\\f055\"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:\"\\f58b\"}.fa-hand-holding{--fa:\"\\f4bd\"}.fa-plug-circle-exclamation{--fa:\"\\e55d\"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:\"\\f127\"}.fa-clone{--fa:\"\\f24d\"}.fa-person-walking-arrow-loop-left{--fa:\"\\e551\"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:\"\\f882\"}.fa-fire-alt,.fa-fire-flame-curved{--fa:\"\\f7e4\"}.fa-tornado{--fa:\"\\f76f\"}.fa-file-circle-plus{--fa:\"\\e494\"}.fa-book-quran,.fa-quran{--fa:\"\\f687\"}.fa-anchor{--fa:\"\\f13d\"}.fa-border-all{--fa:\"\\f84c\"}.fa-angry,.fa-face-angry{--fa:\"\\f556\"}.fa-cookie-bite{--fa:\"\\f564\"}.fa-arrow-trend-down{--fa:\"\\e097\"}.fa-feed,.fa-rss{--fa:\"\\f09e\"}.fa-draw-polygon{--fa:\"\\f5ee\"}.fa-balance-scale,.fa-scale-balanced{--fa:\"\\f24e\"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:\"\\f62a\"}.fa-shower{--fa:\"\\f2cc\"}.fa-desktop,.fa-desktop-alt{--fa:\"\\f390\"}.fa-m{--fa:\"\\4d\"}.fa-table-list,.fa-th-list{--fa:\"\\f00b\"}.fa-comment-sms,.fa-sms{--fa:\"\\f7cd\"}.fa-book{--fa:\"\\f02d\"}.fa-user-plus{--fa:\"\\f234\"}.fa-check{--fa:\"\\f00c\"}.fa-battery-4,.fa-battery-three-quarters{--fa:\"\\f241\"}.fa-house-circle-check{--fa:\"\\e509\"}.fa-angle-left{--fa:\"\\f104\"}.fa-diagram-successor{--fa:\"\\e47a\"}.fa-truck-arrow-right{--fa:\"\\e58b\"}.fa-arrows-split-up-and-left{--fa:\"\\e4bc\"}.fa-fist-raised,.fa-hand-fist{--fa:\"\\f6de\"}.fa-cloud-moon{--fa:\"\\f6c3\"}.fa-briefcase{--fa:\"\\f0b1\"}.fa-person-falling{--fa:\"\\e546\"}.fa-image-portrait,.fa-portrait{--fa:\"\\f3e0\"}.fa-user-tag{--fa:\"\\f507\"}.fa-rug{--fa:\"\\e569\"}.fa-earth-europe,.fa-globe-europe{--fa:\"\\f7a2\"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:\"\\f59d\"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:\"\\f410\"}.fa-baht-sign{--fa:\"\\e0ac\"}.fa-book-open{--fa:\"\\f518\"}.fa-book-journal-whills,.fa-journal-whills{--fa:\"\\f66a\"}.fa-handcuffs{--fa:\"\\e4f8\"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:\"\\f071\"}.fa-database{--fa:\"\\f1c0\"}.fa-mail-forward,.fa-share{--fa:\"\\f064\"}.fa-bottle-droplet{--fa:\"\\e4c4\"}.fa-mask-face{--fa:\"\\e1d7\"}.fa-hill-rockslide{--fa:\"\\e508\"}.fa-exchange-alt,.fa-right-left{--fa:\"\\f362\"}.fa-paper-plane{--fa:\"\\f1d8\"}.fa-road-circle-exclamation{--fa:\"\\e565\"}.fa-dungeon{--fa:\"\\f6d9\"}.fa-align-right{--fa:\"\\f038\"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:\"\\f53b\"}.fa-life-ring{--fa:\"\\f1cd\"}.fa-hands,.fa-sign-language,.fa-signing{--fa:\"\\f2a7\"}.fa-calendar-day{--fa:\"\\f783\"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:\"\\f5c5\"}.fa-arrows-up-down,.fa-arrows-v{--fa:\"\\f07d\"}.fa-face-grimace,.fa-grimace{--fa:\"\\f57f\"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:\"\\e2ce\"}.fa-level-down-alt,.fa-turn-down{--fa:\"\\f3be\"}.fa-person-walking-arrow-right{--fa:\"\\e552\"}.fa-envelope-square,.fa-square-envelope{--fa:\"\\f199\"}.fa-dice{--fa:\"\\f522\"}.fa-bowling-ball{--fa:\"\\f436\"}.fa-brain{--fa:\"\\f5dc\"}.fa-band-aid,.fa-bandage{--fa:\"\\f462\"}.fa-calendar-minus{--fa:\"\\f272\"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:\"\\f057\"}.fa-gifts{--fa:\"\\f79c\"}.fa-hotel{--fa:\"\\f594\"}.fa-earth-asia,.fa-globe-asia{--fa:\"\\f57e\"}.fa-id-card-alt,.fa-id-card-clip{--fa:\"\\f47f\"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:\"\\f00e\"}.fa-thumbs-up{--fa:\"\\f164\"}.fa-user-clock{--fa:\"\\f4fd\"}.fa-allergies,.fa-hand-dots{--fa:\"\\f461\"}.fa-file-invoice{--fa:\"\\f570\"}.fa-window-minimize{--fa:\"\\f2d1\"}.fa-coffee,.fa-mug-saucer{--fa:\"\\f0f4\"}.fa-brush{--fa:\"\\f55d\"}.fa-file-half-dashed{--fa:\"\\e698\"}.fa-mask{--fa:\"\\f6fa\"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:\"\\f010\"}.fa-ruler-vertical{--fa:\"\\f548\"}.fa-user-alt,.fa-user-large{--fa:\"\\f406\"}.fa-train-tram{--fa:\"\\e5b4\"}.fa-user-nurse{--fa:\"\\f82f\"}.fa-syringe{--fa:\"\\f48e\"}.fa-cloud-sun{--fa:\"\\f6c4\"}.fa-stopwatch-20{--fa:\"\\e06f\"}.fa-square-full{--fa:\"\\f45c\"}.fa-magnet{--fa:\"\\f076\"}.fa-jar{--fa:\"\\e516\"}.fa-note-sticky,.fa-sticky-note{--fa:\"\\f249\"}.fa-bug-slash{--fa:\"\\e490\"}.fa-arrow-up-from-water-pump{--fa:\"\\e4b6\"}.fa-bone{--fa:\"\\f5d7\"}.fa-table-cells-row-unlock{--fa:\"\\e691\"}.fa-user-injured{--fa:\"\\f728\"}.fa-face-sad-tear,.fa-sad-tear{--fa:\"\\f5b4\"}.fa-plane{--fa:\"\\f072\"}.fa-tent-arrows-down{--fa:\"\\e581\"}.fa-exclamation{--fa:\"\\21\"}.fa-arrows-spin{--fa:\"\\e4bb\"}.fa-print{--fa:\"\\f02f\"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:\"\\e2bb\"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:\"\\24\"}.fa-x{--fa:\"\\58\"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:\"\\f688\"}.fa-users-cog,.fa-users-gear{--fa:\"\\f509\"}.fa-person-military-pointing{--fa:\"\\e54a\"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:\"\\f19c\"}.fa-umbrella{--fa:\"\\f0e9\"}.fa-trowel{--fa:\"\\e589\"}.fa-d{--fa:\"\\44\"}.fa-stapler{--fa:\"\\e5af\"}.fa-masks-theater,.fa-theater-masks{--fa:\"\\f630\"}.fa-kip-sign{--fa:\"\\e1c4\"}.fa-hand-point-left{--fa:\"\\f0a5\"}.fa-handshake-alt,.fa-handshake-simple{--fa:\"\\f4c6\"}.fa-fighter-jet,.fa-jet-fighter{--fa:\"\\f0fb\"}.fa-share-alt-square,.fa-square-share-nodes{--fa:\"\\f1e1\"}.fa-barcode{--fa:\"\\f02a\"}.fa-plus-minus{--fa:\"\\e43c\"}.fa-video,.fa-video-camera{--fa:\"\\f03d\"}.fa-graduation-cap,.fa-mortar-board{--fa:\"\\f19d\"}.fa-hand-holding-medical{--fa:\"\\e05c\"}.fa-person-circle-check{--fa:\"\\e53e\"}.fa-level-up-alt,.fa-turn-up{--fa:\"\\f3bf\"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:\"Font Awesome 6 Brands\";--fa-font-brands:normal 400 1em/1 \"Font Awesome 6 Brands\"}@font-face{font-family:\"Font Awesome 6 Brands\";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:\"\\f3d0\"}.fa-hooli{--fa:\"\\f427\"}.fa-yelp{--fa:\"\\f1e9\"}.fa-cc-visa{--fa:\"\\f1f0\"}.fa-lastfm{--fa:\"\\f202\"}.fa-shopware{--fa:\"\\f5b5\"}.fa-creative-commons-nc{--fa:\"\\f4e8\"}.fa-aws{--fa:\"\\f375\"}.fa-redhat{--fa:\"\\f7bc\"}.fa-yoast{--fa:\"\\f2b1\"}.fa-cloudflare{--fa:\"\\e07d\"}.fa-ups{--fa:\"\\f7e0\"}.fa-pixiv{--fa:\"\\e640\"}.fa-wpexplorer{--fa:\"\\f2de\"}.fa-dyalog{--fa:\"\\f399\"}.fa-bity{--fa:\"\\f37a\"}.fa-stackpath{--fa:\"\\f842\"}.fa-buysellads{--fa:\"\\f20d\"}.fa-first-order{--fa:\"\\f2b0\"}.fa-modx{--fa:\"\\f285\"}.fa-guilded{--fa:\"\\e07e\"}.fa-vnv{--fa:\"\\f40b\"}.fa-js-square,.fa-square-js{--fa:\"\\f3b9\"}.fa-microsoft{--fa:\"\\f3ca\"}.fa-qq{--fa:\"\\f1d6\"}.fa-orcid{--fa:\"\\f8d2\"}.fa-java{--fa:\"\\f4e4\"}.fa-invision{--fa:\"\\f7b0\"}.fa-creative-commons-pd-alt{--fa:\"\\f4ed\"}.fa-centercode{--fa:\"\\f380\"}.fa-glide-g{--fa:\"\\f2a6\"}.fa-drupal{--fa:\"\\f1a9\"}.fa-jxl{--fa:\"\\e67b\"}.fa-dart-lang{--fa:\"\\e693\"}.fa-hire-a-helper{--fa:\"\\f3b0\"}.fa-creative-commons-by{--fa:\"\\f4e7\"}.fa-unity{--fa:\"\\e049\"}.fa-whmcs{--fa:\"\\f40d\"}.fa-rocketchat{--fa:\"\\f3e8\"}.fa-vk{--fa:\"\\f189\"}.fa-untappd{--fa:\"\\f405\"}.fa-mailchimp{--fa:\"\\f59e\"}.fa-css3-alt{--fa:\"\\f38b\"}.fa-reddit-square,.fa-square-reddit{--fa:\"\\f1a2\"}.fa-vimeo-v{--fa:\"\\f27d\"}.fa-contao{--fa:\"\\f26d\"}.fa-square-font-awesome{--fa:\"\\e5ad\"}.fa-deskpro{--fa:\"\\f38f\"}.fa-brave{--fa:\"\\e63c\"}.fa-sistrix{--fa:\"\\f3ee\"}.fa-instagram-square,.fa-square-instagram{--fa:\"\\e055\"}.fa-battle-net{--fa:\"\\f835\"}.fa-the-red-yeti{--fa:\"\\f69d\"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:\"\\f3af\"}.fa-edge{--fa:\"\\f282\"}.fa-threads{--fa:\"\\e618\"}.fa-napster{--fa:\"\\f3d2\"}.fa-snapchat-square,.fa-square-snapchat{--fa:\"\\f2ad\"}.fa-google-plus-g{--fa:\"\\f0d5\"}.fa-artstation{--fa:\"\\f77a\"}.fa-markdown{--fa:\"\\f60f\"}.fa-sourcetree{--fa:\"\\f7d3\"}.fa-google-plus{--fa:\"\\f2b3\"}.fa-diaspora{--fa:\"\\f791\"}.fa-foursquare{--fa:\"\\f180\"}.fa-stack-overflow{--fa:\"\\f16c\"}.fa-github-alt{--fa:\"\\f113\"}.fa-phoenix-squadron{--fa:\"\\f511\"}.fa-pagelines{--fa:\"\\f18c\"}.fa-algolia{--fa:\"\\f36c\"}.fa-red-river{--fa:\"\\f3e3\"}.fa-creative-commons-sa{--fa:\"\\f4ef\"}.fa-safari{--fa:\"\\f267\"}.fa-google{--fa:\"\\f1a0\"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:\"\\f35c\"}.fa-atlassian{--fa:\"\\f77b\"}.fa-linkedin-in{--fa:\"\\f0e1\"}.fa-digital-ocean{--fa:\"\\f391\"}.fa-nimblr{--fa:\"\\f5a8\"}.fa-chromecast{--fa:\"\\f838\"}.fa-evernote{--fa:\"\\f839\"}.fa-hacker-news{--fa:\"\\f1d4\"}.fa-creative-commons-sampling{--fa:\"\\f4f0\"}.fa-adversal{--fa:\"\\f36a\"}.fa-creative-commons{--fa:\"\\f25e\"}.fa-watchman-monitoring{--fa:\"\\e087\"}.fa-fonticons{--fa:\"\\f280\"}.fa-weixin{--fa:\"\\f1d7\"}.fa-shirtsinbulk{--fa:\"\\f214\"}.fa-codepen{--fa:\"\\f1cb\"}.fa-git-alt{--fa:\"\\f841\"}.fa-lyft{--fa:\"\\f3c3\"}.fa-rev{--fa:\"\\f5b2\"}.fa-windows{--fa:\"\\f17a\"}.fa-wizards-of-the-coast{--fa:\"\\f730\"}.fa-square-viadeo,.fa-viadeo-square{--fa:\"\\f2aa\"}.fa-meetup{--fa:\"\\f2e0\"}.fa-centos{--fa:\"\\f789\"}.fa-adn{--fa:\"\\f170\"}.fa-cloudsmith{--fa:\"\\f384\"}.fa-opensuse{--fa:\"\\e62b\"}.fa-pied-piper-alt{--fa:\"\\f1a8\"}.fa-dribbble-square,.fa-square-dribbble{--fa:\"\\f397\"}.fa-codiepie{--fa:\"\\f284\"}.fa-node{--fa:\"\\f419\"}.fa-mix{--fa:\"\\f3cb\"}.fa-steam{--fa:\"\\f1b6\"}.fa-cc-apple-pay{--fa:\"\\f416\"}.fa-scribd{--fa:\"\\f28a\"}.fa-debian{--fa:\"\\e60b\"}.fa-openid{--fa:\"\\f19b\"}.fa-instalod{--fa:\"\\e081\"}.fa-files-pinwheel{--fa:\"\\e69f\"}.fa-expeditedssl{--fa:\"\\f23e\"}.fa-sellcast{--fa:\"\\f2da\"}.fa-square-twitter,.fa-twitter-square{--fa:\"\\f081\"}.fa-r-project{--fa:\"\\f4f7\"}.fa-delicious{--fa:\"\\f1a5\"}.fa-freebsd{--fa:\"\\f3a4\"}.fa-vuejs{--fa:\"\\f41f\"}.fa-accusoft{--fa:\"\\f369\"}.fa-ioxhost{--fa:\"\\f208\"}.fa-fonticons-fi{--fa:\"\\f3a2\"}.fa-app-store{--fa:\"\\f36f\"}.fa-cc-mastercard{--fa:\"\\f1f1\"}.fa-itunes-note{--fa:\"\\f3b5\"}.fa-golang{--fa:\"\\e40f\"}.fa-kickstarter,.fa-square-kickstarter{--fa:\"\\f3bb\"}.fa-grav{--fa:\"\\f2d6\"}.fa-weibo{--fa:\"\\f18a\"}.fa-uncharted{--fa:\"\\e084\"}.fa-firstdraft{--fa:\"\\f3a1\"}.fa-square-youtube,.fa-youtube-square{--fa:\"\\f431\"}.fa-wikipedia-w{--fa:\"\\f266\"}.fa-rendact,.fa-wpressr{--fa:\"\\f3e4\"}.fa-angellist{--fa:\"\\f209\"}.fa-galactic-republic{--fa:\"\\f50c\"}.fa-nfc-directional{--fa:\"\\e530\"}.fa-skype{--fa:\"\\f17e\"}.fa-joget{--fa:\"\\f3b7\"}.fa-fedora{--fa:\"\\f798\"}.fa-stripe-s{--fa:\"\\f42a\"}.fa-meta{--fa:\"\\e49b\"}.fa-laravel{--fa:\"\\f3bd\"}.fa-hotjar{--fa:\"\\f3b1\"}.fa-bluetooth-b{--fa:\"\\f294\"}.fa-square-letterboxd{--fa:\"\\e62e\"}.fa-sticker-mule{--fa:\"\\f3f7\"}.fa-creative-commons-zero{--fa:\"\\f4f3\"}.fa-hips{--fa:\"\\f452\"}.fa-css{--fa:\"\\e6a2\"}.fa-behance{--fa:\"\\f1b4\"}.fa-reddit{--fa:\"\\f1a1\"}.fa-discord{--fa:\"\\f392\"}.fa-chrome{--fa:\"\\f268\"}.fa-app-store-ios{--fa:\"\\f370\"}.fa-cc-discover{--fa:\"\\f1f2\"}.fa-wpbeginner{--fa:\"\\f297\"}.fa-confluence{--fa:\"\\f78d\"}.fa-shoelace{--fa:\"\\e60c\"}.fa-mdb{--fa:\"\\f8ca\"}.fa-dochub{--fa:\"\\f394\"}.fa-accessible-icon{--fa:\"\\f368\"}.fa-ebay{--fa:\"\\f4f4\"}.fa-amazon{--fa:\"\\f270\"}.fa-unsplash{--fa:\"\\e07c\"}.fa-yarn{--fa:\"\\f7e3\"}.fa-square-steam,.fa-steam-square{--fa:\"\\f1b7\"}.fa-500px{--fa:\"\\f26e\"}.fa-square-vimeo,.fa-vimeo-square{--fa:\"\\f194\"}.fa-asymmetrik{--fa:\"\\f372\"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:\"\\f2b4\"}.fa-gratipay{--fa:\"\\f184\"}.fa-apple{--fa:\"\\f179\"}.fa-hive{--fa:\"\\e07f\"}.fa-gitkraken{--fa:\"\\f3a6\"}.fa-keybase{--fa:\"\\f4f5\"}.fa-apple-pay{--fa:\"\\f415\"}.fa-padlet{--fa:\"\\e4a0\"}.fa-amazon-pay{--fa:\"\\f42c\"}.fa-github-square,.fa-square-github{--fa:\"\\f092\"}.fa-stumbleupon{--fa:\"\\f1a4\"}.fa-fedex{--fa:\"\\f797\"}.fa-phoenix-framework{--fa:\"\\f3dc\"}.fa-shopify{--fa:\"\\e057\"}.fa-neos{--fa:\"\\f612\"}.fa-square-threads{--fa:\"\\e619\"}.fa-hackerrank{--fa:\"\\f5f7\"}.fa-researchgate{--fa:\"\\f4f8\"}.fa-swift{--fa:\"\\f8e1\"}.fa-angular{--fa:\"\\f420\"}.fa-speakap{--fa:\"\\f3f3\"}.fa-angrycreative{--fa:\"\\f36e\"}.fa-y-combinator{--fa:\"\\f23b\"}.fa-empire{--fa:\"\\f1d1\"}.fa-envira{--fa:\"\\f299\"}.fa-google-scholar{--fa:\"\\e63b\"}.fa-gitlab-square,.fa-square-gitlab{--fa:\"\\e5ae\"}.fa-studiovinari{--fa:\"\\f3f8\"}.fa-pied-piper{--fa:\"\\f2ae\"}.fa-wordpress{--fa:\"\\f19a\"}.fa-product-hunt{--fa:\"\\f288\"}.fa-firefox{--fa:\"\\f269\"}.fa-linode{--fa:\"\\f2b8\"}.fa-goodreads{--fa:\"\\f3a8\"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:\"\\f264\"}.fa-jsfiddle{--fa:\"\\f1cc\"}.fa-sith{--fa:\"\\f512\"}.fa-themeisle{--fa:\"\\f2b2\"}.fa-page4{--fa:\"\\f3d7\"}.fa-hashnode{--fa:\"\\e499\"}.fa-react{--fa:\"\\f41b\"}.fa-cc-paypal{--fa:\"\\f1f4\"}.fa-squarespace{--fa:\"\\f5be\"}.fa-cc-stripe{--fa:\"\\f1f5\"}.fa-creative-commons-share{--fa:\"\\f4f2\"}.fa-bitcoin{--fa:\"\\f379\"}.fa-keycdn{--fa:\"\\f3ba\"}.fa-opera{--fa:\"\\f26a\"}.fa-itch-io{--fa:\"\\f83a\"}.fa-umbraco{--fa:\"\\f8e8\"}.fa-galactic-senate{--fa:\"\\f50d\"}.fa-ubuntu{--fa:\"\\f7df\"}.fa-draft2digital{--fa:\"\\f396\"}.fa-stripe{--fa:\"\\f429\"}.fa-houzz{--fa:\"\\f27c\"}.fa-gg{--fa:\"\\f260\"}.fa-dhl{--fa:\"\\f790\"}.fa-pinterest-square,.fa-square-pinterest{--fa:\"\\f0d3\"}.fa-xing{--fa:\"\\f168\"}.fa-blackberry{--fa:\"\\f37b\"}.fa-creative-commons-pd{--fa:\"\\f4ec\"}.fa-playstation{--fa:\"\\f3df\"}.fa-quinscape{--fa:\"\\f459\"}.fa-less{--fa:\"\\f41d\"}.fa-blogger-b{--fa:\"\\f37d\"}.fa-opencart{--fa:\"\\f23d\"}.fa-vine{--fa:\"\\f1ca\"}.fa-signal-messenger{--fa:\"\\e663\"}.fa-paypal{--fa:\"\\f1ed\"}.fa-gitlab{--fa:\"\\f296\"}.fa-typo3{--fa:\"\\f42b\"}.fa-reddit-alien{--fa:\"\\f281\"}.fa-yahoo{--fa:\"\\f19e\"}.fa-dailymotion{--fa:\"\\e052\"}.fa-affiliatetheme{--fa:\"\\f36b\"}.fa-pied-piper-pp{--fa:\"\\f1a7\"}.fa-bootstrap{--fa:\"\\f836\"}.fa-odnoklassniki{--fa:\"\\f263\"}.fa-nfc-symbol{--fa:\"\\e531\"}.fa-mintbit{--fa:\"\\e62f\"}.fa-ethereum{--fa:\"\\f42e\"}.fa-speaker-deck{--fa:\"\\f83c\"}.fa-creative-commons-nc-eu{--fa:\"\\f4e9\"}.fa-patreon{--fa:\"\\f3d9\"}.fa-avianex{--fa:\"\\f374\"}.fa-ello{--fa:\"\\f5f1\"}.fa-gofore{--fa:\"\\f3a7\"}.fa-bimobject{--fa:\"\\f378\"}.fa-brave-reverse{--fa:\"\\e63d\"}.fa-facebook-f{--fa:\"\\f39e\"}.fa-google-plus-square,.fa-square-google-plus{--fa:\"\\f0d4\"}.fa-web-awesome{--fa:\"\\e682\"}.fa-mandalorian{--fa:\"\\f50f\"}.fa-first-order-alt{--fa:\"\\f50a\"}.fa-osi{--fa:\"\\f41a\"}.fa-google-wallet{--fa:\"\\f1ee\"}.fa-d-and-d-beyond{--fa:\"\\f6ca\"}.fa-periscope{--fa:\"\\f3da\"}.fa-fulcrum{--fa:\"\\f50b\"}.fa-cloudscale{--fa:\"\\f383\"}.fa-forumbee{--fa:\"\\f211\"}.fa-mizuni{--fa:\"\\f3cc\"}.fa-schlix{--fa:\"\\f3ea\"}.fa-square-xing,.fa-xing-square{--fa:\"\\f169\"}.fa-bandcamp{--fa:\"\\f2d5\"}.fa-wpforms{--fa:\"\\f298\"}.fa-cloudversify{--fa:\"\\f385\"}.fa-usps{--fa:\"\\f7e1\"}.fa-megaport{--fa:\"\\f5a3\"}.fa-magento{--fa:\"\\f3c4\"}.fa-spotify{--fa:\"\\f1bc\"}.fa-optin-monster{--fa:\"\\f23c\"}.fa-fly{--fa:\"\\f417\"}.fa-square-bluesky{--fa:\"\\e6a3\"}.fa-aviato{--fa:\"\\f421\"}.fa-itunes{--fa:\"\\f3b4\"}.fa-cuttlefish{--fa:\"\\f38c\"}.fa-blogger{--fa:\"\\f37c\"}.fa-flickr{--fa:\"\\f16e\"}.fa-viber{--fa:\"\\f409\"}.fa-soundcloud{--fa:\"\\f1be\"}.fa-digg{--fa:\"\\f1a6\"}.fa-tencent-weibo{--fa:\"\\f1d5\"}.fa-letterboxd{--fa:\"\\e62d\"}.fa-symfony{--fa:\"\\f83d\"}.fa-maxcdn{--fa:\"\\f136\"}.fa-etsy{--fa:\"\\f2d7\"}.fa-facebook-messenger{--fa:\"\\f39f\"}.fa-audible{--fa:\"\\f373\"}.fa-think-peaks{--fa:\"\\f731\"}.fa-bilibili{--fa:\"\\e3d9\"}.fa-erlang{--fa:\"\\f39d\"}.fa-x-twitter{--fa:\"\\e61b\"}.fa-cotton-bureau{--fa:\"\\f89e\"}.fa-dashcube{--fa:\"\\f210\"}.fa-42-group,.fa-innosoft{--fa:\"\\e080\"}.fa-stack-exchange{--fa:\"\\f18d\"}.fa-elementor{--fa:\"\\f430\"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:\"\\e01e\"}.fa-creative-commons-nd{--fa:\"\\f4eb\"}.fa-palfed{--fa:\"\\f3d8\"}.fa-superpowers{--fa:\"\\f2dd\"}.fa-resolving{--fa:\"\\f3e7\"}.fa-xbox{--fa:\"\\f412\"}.fa-square-web-awesome-stroke{--fa:\"\\e684\"}.fa-searchengin{--fa:\"\\f3eb\"}.fa-tiktok{--fa:\"\\e07b\"}.fa-facebook-square,.fa-square-facebook{--fa:\"\\f082\"}.fa-renren{--fa:\"\\f18b\"}.fa-linux{--fa:\"\\f17c\"}.fa-glide{--fa:\"\\f2a5\"}.fa-linkedin{--fa:\"\\f08c\"}.fa-hubspot{--fa:\"\\f3b2\"}.fa-deploydog{--fa:\"\\f38e\"}.fa-twitch{--fa:\"\\f1e8\"}.fa-flutter{--fa:\"\\e694\"}.fa-ravelry{--fa:\"\\f2d9\"}.fa-mixer{--fa:\"\\e056\"}.fa-lastfm-square,.fa-square-lastfm{--fa:\"\\f203\"}.fa-vimeo{--fa:\"\\f40a\"}.fa-mendeley{--fa:\"\\f7b3\"}.fa-uniregistry{--fa:\"\\f404\"}.fa-figma{--fa:\"\\f799\"}.fa-creative-commons-remix{--fa:\"\\f4ee\"}.fa-cc-amazon-pay{--fa:\"\\f42d\"}.fa-dropbox{--fa:\"\\f16b\"}.fa-instagram{--fa:\"\\f16d\"}.fa-cmplid{--fa:\"\\e360\"}.fa-upwork{--fa:\"\\e641\"}.fa-facebook{--fa:\"\\f09a\"}.fa-gripfire{--fa:\"\\f3ac\"}.fa-jedi-order{--fa:\"\\f50e\"}.fa-uikit{--fa:\"\\f403\"}.fa-fort-awesome-alt{--fa:\"\\f3a3\"}.fa-phabricator{--fa:\"\\f3db\"}.fa-ussunnah{--fa:\"\\f407\"}.fa-earlybirds{--fa:\"\\f39a\"}.fa-trade-federation{--fa:\"\\f513\"}.fa-autoprefixer{--fa:\"\\f41c\"}.fa-whatsapp{--fa:\"\\f232\"}.fa-square-upwork{--fa:\"\\e67c\"}.fa-slideshare{--fa:\"\\f1e7\"}.fa-google-play{--fa:\"\\f3ab\"}.fa-viadeo{--fa:\"\\f2a9\"}.fa-line{--fa:\"\\f3c0\"}.fa-google-drive{--fa:\"\\f3aa\"}.fa-servicestack{--fa:\"\\f3ec\"}.fa-simplybuilt{--fa:\"\\f215\"}.fa-bitbucket{--fa:\"\\f171\"}.fa-imdb{--fa:\"\\f2d8\"}.fa-deezer{--fa:\"\\e077\"}.fa-raspberry-pi{--fa:\"\\f7bb\"}.fa-jira{--fa:\"\\f7b1\"}.fa-docker{--fa:\"\\f395\"}.fa-screenpal{--fa:\"\\e570\"}.fa-bluetooth{--fa:\"\\f293\"}.fa-gitter{--fa:\"\\f426\"}.fa-d-and-d{--fa:\"\\f38d\"}.fa-microblog{--fa:\"\\e01a\"}.fa-cc-diners-club{--fa:\"\\f24c\"}.fa-gg-circle{--fa:\"\\f261\"}.fa-pied-piper-hat{--fa:\"\\f4e5\"}.fa-kickstarter-k{--fa:\"\\f3bc\"}.fa-yandex{--fa:\"\\f413\"}.fa-readme{--fa:\"\\f4d5\"}.fa-html5{--fa:\"\\f13b\"}.fa-sellsy{--fa:\"\\f213\"}.fa-square-web-awesome{--fa:\"\\e683\"}.fa-sass{--fa:\"\\f41e\"}.fa-wirsindhandwerk,.fa-wsh{--fa:\"\\e2d0\"}.fa-buromobelexperte{--fa:\"\\f37f\"}.fa-salesforce{--fa:\"\\f83b\"}.fa-octopus-deploy{--fa:\"\\e082\"}.fa-medapps{--fa:\"\\f3c6\"}.fa-ns8{--fa:\"\\f3d5\"}.fa-pinterest-p{--fa:\"\\f231\"}.fa-apper{--fa:\"\\f371\"}.fa-fort-awesome{--fa:\"\\f286\"}.fa-waze{--fa:\"\\f83f\"}.fa-bluesky{--fa:\"\\e671\"}.fa-cc-jcb{--fa:\"\\f24b\"}.fa-snapchat,.fa-snapchat-ghost{--fa:\"\\f2ab\"}.fa-fantasy-flight-games{--fa:\"\\f6dc\"}.fa-rust{--fa:\"\\e07a\"}.fa-wix{--fa:\"\\f5cf\"}.fa-behance-square,.fa-square-behance{--fa:\"\\f1b5\"}.fa-supple{--fa:\"\\f3f9\"}.fa-webflow{--fa:\"\\e65c\"}.fa-rebel{--fa:\"\\f1d0\"}.fa-css3{--fa:\"\\f13c\"}.fa-staylinked{--fa:\"\\f3f5\"}.fa-kaggle{--fa:\"\\f5fa\"}.fa-space-awesome{--fa:\"\\e5ac\"}.fa-deviantart{--fa:\"\\f1bd\"}.fa-cpanel{--fa:\"\\f388\"}.fa-goodreads-g{--fa:\"\\f3a9\"}.fa-git-square,.fa-square-git{--fa:\"\\f1d2\"}.fa-square-tumblr,.fa-tumblr-square{--fa:\"\\f174\"}.fa-trello{--fa:\"\\f181\"}.fa-creative-commons-nc-jp{--fa:\"\\f4ea\"}.fa-get-pocket{--fa:\"\\f265\"}.fa-perbyte{--fa:\"\\e083\"}.fa-grunt{--fa:\"\\f3ad\"}.fa-weebly{--fa:\"\\f5cc\"}.fa-connectdevelop{--fa:\"\\f20e\"}.fa-leanpub{--fa:\"\\f212\"}.fa-black-tie{--fa:\"\\f27e\"}.fa-themeco{--fa:\"\\f5c6\"}.fa-python{--fa:\"\\f3e2\"}.fa-android{--fa:\"\\f17b\"}.fa-bots{--fa:\"\\e340\"}.fa-free-code-camp{--fa:\"\\f2c5\"}.fa-hornbill{--fa:\"\\f592\"}.fa-js{--fa:\"\\f3b8\"}.fa-ideal{--fa:\"\\e013\"}.fa-git{--fa:\"\\f1d3\"}.fa-dev{--fa:\"\\f6cc\"}.fa-sketch{--fa:\"\\f7c6\"}.fa-yandex-international{--fa:\"\\f414\"}.fa-cc-amex{--fa:\"\\f1f3\"}.fa-uber{--fa:\"\\f402\"}.fa-github{--fa:\"\\f09b\"}.fa-php{--fa:\"\\f457\"}.fa-alipay{--fa:\"\\f642\"}.fa-youtube{--fa:\"\\f167\"}.fa-skyatlas{--fa:\"\\f216\"}.fa-firefox-browser{--fa:\"\\e007\"}.fa-replyd{--fa:\"\\f3e6\"}.fa-suse{--fa:\"\\f7d6\"}.fa-jenkins{--fa:\"\\f3b6\"}.fa-twitter{--fa:\"\\f099\"}.fa-rockrms{--fa:\"\\f3e9\"}.fa-pinterest{--fa:\"\\f0d2\"}.fa-buffer{--fa:\"\\f837\"}.fa-npm{--fa:\"\\f3d4\"}.fa-yammer{--fa:\"\\f840\"}.fa-btc{--fa:\"\\f15a\"}.fa-dribbble{--fa:\"\\f17d\"}.fa-stumbleupon-circle{--fa:\"\\f1a3\"}.fa-internet-explorer{--fa:\"\\f26b\"}.fa-stubber{--fa:\"\\e5c7\"}.fa-telegram,.fa-telegram-plane{--fa:\"\\f2c6\"}.fa-old-republic{--fa:\"\\f510\"}.fa-odysee{--fa:\"\\e5c6\"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:\"\\f40c\"}.fa-node-js{--fa:\"\\f3d3\"}.fa-edge-legacy{--fa:\"\\e078\"}.fa-slack,.fa-slack-hash{--fa:\"\\f198\"}.fa-medrt{--fa:\"\\f3c8\"}.fa-usb{--fa:\"\\f287\"}.fa-tumblr{--fa:\"\\f173\"}.fa-vaadin{--fa:\"\\f408\"}.fa-quora{--fa:\"\\f2c4\"}.fa-square-x-twitter{--fa:\"\\e61a\"}.fa-reacteurope{--fa:\"\\f75d\"}.fa-medium,.fa-medium-m{--fa:\"\\f23a\"}.fa-amilia{--fa:\"\\f36d\"}.fa-mixcloud{--fa:\"\\f289\"}.fa-flipboard{--fa:\"\\f44d\"}.fa-viacoin{--fa:\"\\f237\"}.fa-critical-role{--fa:\"\\f6c9\"}.fa-sitrox{--fa:\"\\e44a\"}.fa-discourse{--fa:\"\\f393\"}.fa-joomla{--fa:\"\\f1aa\"}.fa-mastodon{--fa:\"\\f4f6\"}.fa-airbnb{--fa:\"\\f834\"}.fa-wolf-pack-battalion{--fa:\"\\f514\"}.fa-buy-n-large{--fa:\"\\f8a6\"}.fa-gulp{--fa:\"\\f3ae\"}.fa-creative-commons-sampling-plus{--fa:\"\\f4f1\"}.fa-strava{--fa:\"\\f428\"}.fa-ember{--fa:\"\\f423\"}.fa-canadian-maple-leaf{--fa:\"\\f785\"}.fa-teamspeak{--fa:\"\\f4f9\"}.fa-pushed{--fa:\"\\f3e1\"}.fa-wordpress-simple{--fa:\"\\f411\"}.fa-nutritionix{--fa:\"\\f3d6\"}.fa-wodu{--fa:\"\\e088\"}.fa-google-pay{--fa:\"\\e079\"}.fa-intercom{--fa:\"\\f7af\"}.fa-zhihu{--fa:\"\\f63f\"}.fa-korvue{--fa:\"\\f42f\"}.fa-pix{--fa:\"\\e43a\"}.fa-steam-symbol{--fa:\"\\f3f6\"}:host,:root{--fa-font-regular:normal 400 1em/1 \"Font Awesome 6 Free\"}@font-face{font-family:\"Font Awesome 6 Free\";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:\"Font Awesome 6 Free\";--fa-font-solid:normal 900 1em/1 \"Font Awesome 6 Free\"}@font-face{font-family:\"Font Awesome 6 Free\";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\")}.fa-solid,.fas{font-weight:900}@font-face{font-family:\"Font Awesome 5 Brands\";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\")}@font-face{font-family:\"Font Awesome 5 Free\";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\")}@font-face{font-family:\"Font Awesome 5 Free\";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\")}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\")}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\")}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format(\"woff2\"),url(../webfonts/fa-v4compatibility.ttf) format(\"truetype\");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}.button{display:flex;height:50px;padding:0;background:#3e7671;border:none;outline:none;border-radius:5px;overflow:hidden;font-size:16px;font-weight:500;cursor:pointer;min-width:220px;max-width:220px}.button:hover{background:#008168}.button:active{background:#3e7671}.button-text{display:block;margin:auto;padding:0 10px;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:50%;text-transform:capitalize}.button-icon{margin:auto;padding:10px;font-size:20px;color:#ffffff}.button-profile{margin:auto}.button-profile svg{display:flex;margin-left:4px;background-color:#fff;border-radius:4px}.profile-image{display:flex;margin-left:4px;width:40px;height:40px;border-radius:4px;background-color:#fff}.button-text-full-width{width:auto!important}.button-link{text-decoration:none!important}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:180px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;border-radius:5px;text-align:left!important}.dropdown-content-link a{color:#71797E;padding:16px 20px;text-decoration:none;display:block;cursor:pointer;font-size:1rem!important}.dropdown-content-link a:hover{background-color:#f1f1f1;color:#000;opacity:0.7}.dropdown:hover .dropdown-content{display:block}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4);text-align:center}.modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:40%}.modal-body{max-height:50vh;overflow-y:auto}.close{color:#aaaaaa;float:right;font-size:28px;font-weight:bold}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-app{background-color:#c3e9bc;padding:15px;margin:10px;border-radius:5px}.external-app-link{text-decoration:none;color:#000}.gray-text{color:#606060}.green-text{color:#3e7671}#countdown{position:relative;margin:auto;margin-top:30px;height:40px;width:40px;text-align:center}#countdown-number{color:#2e2e2e;display:inline-block;line-height:40px}#countdown svg{position:absolute;top:0;right:0;width:40px;height:40px;transform:rotateY(-180deg) rotateZ(-90deg)}#countdown svg circle{stroke-dasharray:113px;stroke-dashoffset:0px;stroke-linecap:round;stroke-width:4px;stroke:#008168;fill:none;animation:countdown 6s linear infinite forwards}@keyframes countdown{from{stroke-dashoffset:0px}to{stroke-dashoffset:113px}}.lds-ring{color:#fff}.lds-ring{display:flex;justify-content:center;align-items:center;margin:auto;position:relative}.lds-ring div{box-sizing:border-box;display:block;position:absolute;width:25px;height:25px;margin:3px;border:2px solid currentColor;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;border-color:currentColor transparent transparent transparent}.lds-ring div:nth-child(1){animation-delay:-0.45s}.lds-ring div:nth-child(2){animation-delay:-0.3s}.lds-ring div:nth-child(3){animation-delay:-0.15s}@keyframes lds-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.dropdown-content .dropdown-user-profile{padding:12px 10px 8px 18px;border-bottom:1px solid #aaaaaa}.dropdown-content .dropdown-user-profile .username{font-size:16px;color:#2e2e2e;text-transform:capitalize}.dropdown-content .dropdown-user-profile .first-last-name{font-size:13px;color:#606060}.menu-bar-icons{color:#008168;display:inline-block;margin-right:8px;font-size:18px}.other-links-list{padding:14px;background-color:#f1f1f1;margin-bottom:8px;text-align:start;border-radius:5px}.tab-list{margin:0px 40px;padding:0;list-style:none;display:flex;position:relative;width:85%;border-bottom:1px solid #aaa}.tab-item{flex:1;text-align:center;transition:.3s;opacity:0.5}.tab-toggle{display:none}.tab-content{display:none}.tab-toggle:nth-child(1):checked~.tab-list .tab-item:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-list .tab-item:nth-child(2){opacity:1;color:#008168;border-bottom:2px solid #008168}.tab-toggle:nth-child(2):checked~.tab-list::before{transform:translateX(100%)}.tab-toggle:nth-child(3):checked~.tab-list::before{transform:translateX(200%)}.tab-toggle:nth-child(1):checked~.tab-container .tab-content:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-container .tab-content:nth-child(2){display:block}.tab-trigger{display:block;padding:10px 0}.tab-container{padding:15px 30px}.grid-view-menu{display:grid;gap:4px;grid-template-columns:repeat(3, 1fr);align-content:start;padding:8px;max-height:230px;overflow-y:auto}.grid-view-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:75px;height:70px;padding:6px;text-decoration:none;font-size:13px;color:#128f8b;text-align:center;transition:transform 0.2s ease, background-color 0.1s ease;position:relative;z-index:1;border-radius:3px;cursor:pointer}.grid-view-link:hover{background-color:#eeeeee;transform:scale(1.1);z-index:5}.grid-view-link-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#71797e;width:100%}.grid-view-link:hover .grid-view-link-text{white-space:pre-wrap;overflow:visible;text-overflow:unset}.grid-view-link i{transition:transform 0.2s ease}.grid-view-link:hover i{transform:scale(1.1)}hr.solid{border-top:1px solid #bbb;margin:2px 0}.restricted-overlay{position:fixed;inset:0;background:linear-gradient(135deg, #0f3d3e, #128f8b);display:flex;justify-content:center;align-items:center;padding:20px;z-index:9999999;font-family:\"Segoe UI\", sans-serif}.restricted-card{background:#ffffff;border-radius:10px;padding:50px;max-width:540px;width:100%;text-align:center;box-shadow:0 25px 70px rgba(0, 0, 0, 0.25);animation:fadeInUp 0.3s ease}.restricted-icon{font-size:48px;color:#128f8b;margin-bottom:30px}.restricted-card h2{margin-bottom:10px;color:#128f8b}.restricted-message{color:#555;font-size:16px;margin-bottom:30px;line-height:1.5}.restricted-links h4{margin-bottom:20px;color:#128f8b}.link-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));gap:20px;margin-bottom:25px}.restricted-link{background:#ecf2f2;padding:10px;border-radius:10px;text-decoration:none;color:#128f8b;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all 0.2s ease}.restricted-link:hover{background:#128f8b;color:#fff}.restricted-actions{display:flex;justify-content:center;gap:15px}.btn-primary{background:#128f8b;color:#fff;padding:10px 20px;border-radius:8px;text-decoration:none;font-weight:500;transition:0.2s}.btn-primary:hover{background:#0f6e6b}.btn-secondary{background:transparent;border:2px solid #128f8b;color:#128f8b;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-danger{background:transparent;border:2px solid #dc3545;color:#dc3545;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-secondary:hover{background:#128f8b;color:#fff}@keyframes fadeInUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}";
4013
- const DashButtonStyle0 = dashButtonCss;
4059
+ const dashButtonCss = () => `.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0{--fa:"\\30"}.fa-1{--fa:"\\31"}.fa-2{--fa:"\\32"}.fa-3{--fa:"\\33"}.fa-4{--fa:"\\34"}.fa-5{--fa:"\\35"}.fa-6{--fa:"\\36"}.fa-7{--fa:"\\37"}.fa-8{--fa:"\\38"}.fa-9{--fa:"\\39"}.fa-fill-drip{--fa:"\\f576"}.fa-arrows-to-circle{--fa:"\\e4bd"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\\f138"}.fa-at{--fa:"\\40"}.fa-trash-alt,.fa-trash-can{--fa:"\\f2ed"}.fa-text-height{--fa:"\\f034"}.fa-user-times,.fa-user-xmark{--fa:"\\f235"}.fa-stethoscope{--fa:"\\f0f1"}.fa-comment-alt,.fa-message{--fa:"\\f27a"}.fa-info{--fa:"\\f129"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\\f422"}.fa-explosion{--fa:"\\e4e9"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\\f15c"}.fa-wave-square{--fa:"\\f83e"}.fa-ring{--fa:"\\f70b"}.fa-building-un{--fa:"\\e4d9"}.fa-dice-three{--fa:"\\f527"}.fa-calendar-alt,.fa-calendar-days{--fa:"\\f073"}.fa-anchor-circle-check{--fa:"\\e4aa"}.fa-building-circle-arrow-right{--fa:"\\e4d1"}.fa-volleyball,.fa-volleyball-ball{--fa:"\\f45f"}.fa-arrows-up-to-line{--fa:"\\e4c2"}.fa-sort-desc,.fa-sort-down{--fa:"\\f0dd"}.fa-circle-minus,.fa-minus-circle{--fa:"\\f056"}.fa-door-open{--fa:"\\f52b"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\\f2f5"}.fa-atom{--fa:"\\f5d2"}.fa-soap{--fa:"\\e06e"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\\f86d"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\\f539"}.fa-bridge-circle-check{--fa:"\\e4c9"}.fa-pump-medical{--fa:"\\e06a"}.fa-fingerprint{--fa:"\\f577"}.fa-hand-point-right{--fa:"\\f0a4"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\\f689"}.fa-forward-step,.fa-step-forward{--fa:"\\f051"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\\f5b8"}.fa-flag-checkered{--fa:"\\f11e"}.fa-football,.fa-football-ball{--fa:"\\f44e"}.fa-school-circle-exclamation{--fa:"\\e56c"}.fa-crop{--fa:"\\f125"}.fa-angle-double-down,.fa-angles-down{--fa:"\\f103"}.fa-users-rectangle{--fa:"\\e594"}.fa-people-roof{--fa:"\\e537"}.fa-people-line{--fa:"\\e534"}.fa-beer,.fa-beer-mug-empty{--fa:"\\f0fc"}.fa-diagram-predecessor{--fa:"\\e477"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\\f176"}.fa-burn,.fa-fire-flame-simple{--fa:"\\f46a"}.fa-male,.fa-person{--fa:"\\f183"}.fa-laptop{--fa:"\\f109"}.fa-file-csv{--fa:"\\f6dd"}.fa-menorah{--fa:"\\f676"}.fa-truck-plane{--fa:"\\e58f"}.fa-record-vinyl{--fa:"\\f8d9"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\\f587"}.fa-bong{--fa:"\\f55c"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\\f67b"}.fa-arrow-down-up-across-line{--fa:"\\e4af"}.fa-spoon,.fa-utensil-spoon{--fa:"\\f2e5"}.fa-jar-wheat{--fa:"\\e517"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\\f674"}.fa-file-circle-exclamation{--fa:"\\e4eb"}.fa-circle-h,.fa-hospital-symbol{--fa:"\\f47e"}.fa-pager{--fa:"\\f815"}.fa-address-book,.fa-contact-book{--fa:"\\f2b9"}.fa-strikethrough{--fa:"\\f0cc"}.fa-k{--fa:"\\4b"}.fa-landmark-flag{--fa:"\\e51c"}.fa-pencil,.fa-pencil-alt{--fa:"\\f303"}.fa-backward{--fa:"\\f04a"}.fa-caret-right{--fa:"\\f0da"}.fa-comments{--fa:"\\f086"}.fa-file-clipboard,.fa-paste{--fa:"\\f0ea"}.fa-code-pull-request{--fa:"\\e13c"}.fa-clipboard-list{--fa:"\\f46d"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\\f4de"}.fa-user-check{--fa:"\\f4fc"}.fa-vial-virus{--fa:"\\e597"}.fa-sheet-plastic{--fa:"\\e571"}.fa-blog{--fa:"\\f781"}.fa-user-ninja{--fa:"\\f504"}.fa-person-arrow-up-from-line{--fa:"\\e539"}.fa-scroll-torah,.fa-torah{--fa:"\\f6a0"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\\f458"}.fa-toggle-off{--fa:"\\f204"}.fa-archive,.fa-box-archive{--fa:"\\f187"}.fa-person-drowning{--fa:"\\e545"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\\f886"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\\f58a"}.fa-spray-can{--fa:"\\f5bd"}.fa-truck-monster{--fa:"\\f63b"}.fa-w{--fa:"\\57"}.fa-earth-africa,.fa-globe-africa{--fa:"\\f57c"}.fa-rainbow{--fa:"\\f75b"}.fa-circle-notch{--fa:"\\f1ce"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\\f3fa"}.fa-paw{--fa:"\\f1b0"}.fa-cloud{--fa:"\\f0c2"}.fa-trowel-bricks{--fa:"\\e58a"}.fa-face-flushed,.fa-flushed{--fa:"\\f579"}.fa-hospital-user{--fa:"\\f80d"}.fa-tent-arrow-left-right{--fa:"\\e57f"}.fa-gavel,.fa-legal{--fa:"\\f0e3"}.fa-binoculars{--fa:"\\f1e5"}.fa-microphone-slash{--fa:"\\f131"}.fa-box-tissue{--fa:"\\e05b"}.fa-motorcycle{--fa:"\\f21c"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\\f562"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\\f5ae"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\\e068"}.fa-mars-and-venus-burst{--fa:"\\e523"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\\f152"}.fa-cut,.fa-scissors{--fa:"\\f0c4"}.fa-sun-plant-wilt{--fa:"\\e57a"}.fa-toilets-portable{--fa:"\\e584"}.fa-hockey-puck{--fa:"\\f453"}.fa-table{--fa:"\\f0ce"}.fa-magnifying-glass-arrow-right{--fa:"\\e521"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\\f566"}.fa-users-slash{--fa:"\\e073"}.fa-clover{--fa:"\\e139"}.fa-mail-reply,.fa-reply{--fa:"\\f3e5"}.fa-star-and-crescent{--fa:"\\f699"}.fa-house-fire{--fa:"\\e50c"}.fa-minus-square,.fa-square-minus{--fa:"\\f146"}.fa-helicopter{--fa:"\\f533"}.fa-compass{--fa:"\\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\\f150"}.fa-file-circle-question{--fa:"\\e4ef"}.fa-laptop-code{--fa:"\\f5fc"}.fa-swatchbook{--fa:"\\f5c3"}.fa-prescription-bottle{--fa:"\\f485"}.fa-bars,.fa-navicon{--fa:"\\f0c9"}.fa-people-group{--fa:"\\e533"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\\f253"}.fa-heart-broken,.fa-heart-crack{--fa:"\\f7a9"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\\f360"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\\f597"}.fa-film{--fa:"\\f008"}.fa-ruler-horizontal{--fa:"\\f547"}.fa-people-robbery{--fa:"\\e536"}.fa-lightbulb{--fa:"\\f0eb"}.fa-caret-left{--fa:"\\f0d9"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\\f06a"}.fa-school-circle-xmark{--fa:"\\e56d"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\\f08b"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\\f13a"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\\f13e"}.fa-cloud-showers-heavy{--fa:"\\f740"}.fa-headphones-alt,.fa-headphones-simple{--fa:"\\f58f"}.fa-sitemap{--fa:"\\f0e8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\\f4b9"}.fa-memory{--fa:"\\f538"}.fa-road-spikes{--fa:"\\e568"}.fa-fire-burner{--fa:"\\e4f1"}.fa-flag{--fa:"\\f024"}.fa-hanukiah{--fa:"\\f6e6"}.fa-feather{--fa:"\\f52d"}.fa-volume-down,.fa-volume-low{--fa:"\\f027"}.fa-comment-slash{--fa:"\\f4b3"}.fa-cloud-sun-rain{--fa:"\\f743"}.fa-compress{--fa:"\\f066"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\\e2cd"}.fa-ankh{--fa:"\\f644"}.fa-hands-holding-child{--fa:"\\e4fa"}.fa-asterisk{--fa:"\\2a"}.fa-check-square,.fa-square-check{--fa:"\\f14a"}.fa-peseta-sign{--fa:"\\e221"}.fa-header,.fa-heading{--fa:"\\f1dc"}.fa-ghost{--fa:"\\f6e2"}.fa-list,.fa-list-squares{--fa:"\\f03a"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\\f87b"}.fa-cart-plus{--fa:"\\f217"}.fa-gamepad{--fa:"\\f11b"}.fa-circle-dot,.fa-dot-circle{--fa:"\\f192"}.fa-dizzy,.fa-face-dizzy{--fa:"\\f567"}.fa-egg{--fa:"\\f7fb"}.fa-house-medical-circle-xmark{--fa:"\\e513"}.fa-campground{--fa:"\\f6bb"}.fa-folder-plus{--fa:"\\f65e"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\\f1e3"}.fa-paint-brush,.fa-paintbrush{--fa:"\\f1fc"}.fa-lock{--fa:"\\f023"}.fa-gas-pump{--fa:"\\f52f"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\\f593"}.fa-map-location,.fa-map-marked{--fa:"\\f59f"}.fa-house-flood-water{--fa:"\\e50e"}.fa-tree{--fa:"\\f1bb"}.fa-bridge-lock{--fa:"\\e4cc"}.fa-sack-dollar{--fa:"\\f81d"}.fa-edit,.fa-pen-to-square{--fa:"\\f044"}.fa-car-side{--fa:"\\f5e4"}.fa-share-alt,.fa-share-nodes{--fa:"\\f1e0"}.fa-heart-circle-minus{--fa:"\\e4ff"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\\f252"}.fa-microscope{--fa:"\\f610"}.fa-sink{--fa:"\\e06d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\\f290"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\\f881"}.fa-mitten{--fa:"\\f7b5"}.fa-person-rays{--fa:"\\e54d"}.fa-users{--fa:"\\f0c0"}.fa-eye-slash{--fa:"\\f070"}.fa-flask-vial{--fa:"\\e4f3"}.fa-hand,.fa-hand-paper{--fa:"\\f256"}.fa-om{--fa:"\\f679"}.fa-worm{--fa:"\\e599"}.fa-house-circle-xmark{--fa:"\\e50b"}.fa-plug{--fa:"\\f1e6"}.fa-chevron-up{--fa:"\\f077"}.fa-hand-spock{--fa:"\\f259"}.fa-stopwatch{--fa:"\\f2f2"}.fa-face-kiss,.fa-kiss{--fa:"\\f596"}.fa-bridge-circle-xmark{--fa:"\\e4cb"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\\f589"}.fa-chess-bishop{--fa:"\\f43a"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\\f58c"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\\f2a4"}.fa-road-circle-check{--fa:"\\e564"}.fa-dice-five{--fa:"\\f523"}.fa-rss-square,.fa-square-rss{--fa:"\\f143"}.fa-land-mine-on{--fa:"\\e51b"}.fa-i-cursor{--fa:"\\f246"}.fa-stamp{--fa:"\\f5bf"}.fa-stairs{--fa:"\\e289"}.fa-i{--fa:"\\49"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\\f6f2"}.fa-pills{--fa:"\\f484"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\\f581"}.fa-tooth{--fa:"\\f5c9"}.fa-v{--fa:"\\56"}.fa-bangladeshi-taka-sign{--fa:"\\e2e6"}.fa-bicycle{--fa:"\\f206"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\\e579"}.fa-head-side-cough-slash{--fa:"\\e062"}.fa-ambulance,.fa-truck-medical{--fa:"\\f0f9"}.fa-wheat-awn-circle-exclamation{--fa:"\\e598"}.fa-snowman{--fa:"\\f7d0"}.fa-mortar-pestle{--fa:"\\f5a7"}.fa-road-barrier{--fa:"\\e562"}.fa-school{--fa:"\\f549"}.fa-igloo{--fa:"\\f7ae"}.fa-joint{--fa:"\\f595"}.fa-angle-right{--fa:"\\f105"}.fa-horse{--fa:"\\f6f0"}.fa-q{--fa:"\\51"}.fa-g{--fa:"\\47"}.fa-notes-medical{--fa:"\\f481"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\\f2c9"}.fa-dong-sign{--fa:"\\e169"}.fa-capsules{--fa:"\\f46b"}.fa-poo-bolt,.fa-poo-storm{--fa:"\\f75a"}.fa-face-frown-open,.fa-frown-open{--fa:"\\f57a"}.fa-hand-point-up{--fa:"\\f0a6"}.fa-money-bill{--fa:"\\f0d6"}.fa-bookmark{--fa:"\\f02e"}.fa-align-justify{--fa:"\\f039"}.fa-umbrella-beach{--fa:"\\f5ca"}.fa-helmet-un{--fa:"\\e503"}.fa-bullseye{--fa:"\\f140"}.fa-bacon{--fa:"\\f7e5"}.fa-hand-point-down{--fa:"\\f0a7"}.fa-arrow-up-from-bracket{--fa:"\\e09a"}.fa-folder,.fa-folder-blank{--fa:"\\f07b"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\\f478"}.fa-radiation{--fa:"\\f7b9"}.fa-chart-simple{--fa:"\\e473"}.fa-mars-stroke{--fa:"\\f229"}.fa-vial{--fa:"\\f492"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\\f624"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\\e2ca"}.fa-e{--fa:"\\45"}.fa-pen-alt,.fa-pen-clip{--fa:"\\f305"}.fa-bridge-circle-exclamation{--fa:"\\e4ca"}.fa-user{--fa:"\\f007"}.fa-school-circle-check{--fa:"\\e56b"}.fa-dumpster{--fa:"\\f793"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\\f5b6"}.fa-building-user{--fa:"\\e4da"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\\f191"}.fa-highlighter{--fa:"\\f591"}.fa-key{--fa:"\\f084"}.fa-bullhorn{--fa:"\\f0a1"}.fa-globe{--fa:"\\f0ac"}.fa-synagogue{--fa:"\\f69b"}.fa-person-half-dress{--fa:"\\e548"}.fa-road-bridge{--fa:"\\e563"}.fa-location-arrow{--fa:"\\f124"}.fa-c{--fa:"\\43"}.fa-tablet-button{--fa:"\\f10a"}.fa-building-lock{--fa:"\\e4d6"}.fa-pizza-slice{--fa:"\\f818"}.fa-money-bill-wave{--fa:"\\f53a"}.fa-area-chart,.fa-chart-area{--fa:"\\f1fe"}.fa-house-flag{--fa:"\\e50d"}.fa-person-circle-minus{--fa:"\\e540"}.fa-ban,.fa-cancel{--fa:"\\f05e"}.fa-camera-rotate{--fa:"\\e0d8"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\\f5d0"}.fa-star{--fa:"\\f005"}.fa-repeat{--fa:"\\f363"}.fa-cross{--fa:"\\f654"}.fa-box{--fa:"\\f466"}.fa-venus-mars{--fa:"\\f228"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\\f245"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\\f31e"}.fa-charging-station{--fa:"\\f5e7"}.fa-shapes,.fa-triangle-circle-square{--fa:"\\f61f"}.fa-random,.fa-shuffle{--fa:"\\f074"}.fa-person-running,.fa-running{--fa:"\\f70c"}.fa-mobile-retro{--fa:"\\e527"}.fa-grip-lines-vertical{--fa:"\\f7a5"}.fa-spider{--fa:"\\f717"}.fa-hands-bound{--fa:"\\e4f9"}.fa-file-invoice-dollar{--fa:"\\f571"}.fa-plane-circle-exclamation{--fa:"\\e556"}.fa-x-ray{--fa:"\\f497"}.fa-spell-check{--fa:"\\f891"}.fa-slash{--fa:"\\f715"}.fa-computer-mouse,.fa-mouse{--fa:"\\f8cc"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\\f090"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\\e070"}.fa-server{--fa:"\\f233"}.fa-virus-covid-slash{--fa:"\\e4a9"}.fa-shop-lock{--fa:"\\e4a5"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\\f251"}.fa-blender-phone{--fa:"\\f6b6"}.fa-building-wheat{--fa:"\\e4db"}.fa-person-breastfeeding{--fa:"\\e53a"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\\f2f6"}.fa-venus{--fa:"\\f221"}.fa-passport{--fa:"\\f5ab"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\\e68f"}.fa-heart-pulse,.fa-heartbeat{--fa:"\\f21e"}.fa-people-carry,.fa-people-carry-box{--fa:"\\f4ce"}.fa-temperature-high{--fa:"\\f769"}.fa-microchip{--fa:"\\f2db"}.fa-crown{--fa:"\\f521"}.fa-weight-hanging{--fa:"\\f5cd"}.fa-xmarks-lines{--fa:"\\e59a"}.fa-file-prescription{--fa:"\\f572"}.fa-weight,.fa-weight-scale{--fa:"\\f496"}.fa-user-friends,.fa-user-group{--fa:"\\f500"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\\f15e"}.fa-chess-knight{--fa:"\\f441"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\\f59b"}.fa-wheelchair{--fa:"\\f193"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\\f0aa"}.fa-toggle-on{--fa:"\\f205"}.fa-person-walking,.fa-walking{--fa:"\\f554"}.fa-l{--fa:"\\4c"}.fa-fire{--fa:"\\f06d"}.fa-bed-pulse,.fa-procedures{--fa:"\\f487"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\\f197"}.fa-face-laugh,.fa-laugh{--fa:"\\f599"}.fa-folder-open{--fa:"\\f07c"}.fa-heart-circle-plus{--fa:"\\e500"}.fa-code-fork{--fa:"\\e13b"}.fa-city{--fa:"\\f64f"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\\f3c9"}.fa-pepper-hot{--fa:"\\f816"}.fa-unlock{--fa:"\\f09c"}.fa-colon-sign{--fa:"\\e140"}.fa-headset{--fa:"\\f590"}.fa-store-slash{--fa:"\\e071"}.fa-road-circle-xmark{--fa:"\\e566"}.fa-user-minus{--fa:"\\f503"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\\f22a"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\\f79f"}.fa-clipboard{--fa:"\\f328"}.fa-house-circle-exclamation{--fa:"\\e50a"}.fa-file-arrow-up,.fa-file-upload{--fa:"\\f574"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\\f1eb"}.fa-bath,.fa-bathtub{--fa:"\\f2cd"}.fa-underline{--fa:"\\f0cd"}.fa-user-edit,.fa-user-pen{--fa:"\\f4ff"}.fa-signature{--fa:"\\f5b7"}.fa-stroopwafel{--fa:"\\f551"}.fa-bold{--fa:"\\f032"}.fa-anchor-lock{--fa:"\\e4ad"}.fa-building-ngo{--fa:"\\e4d7"}.fa-manat-sign{--fa:"\\e1d5"}.fa-not-equal{--fa:"\\f53e"}.fa-border-style,.fa-border-top-left{--fa:"\\f853"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\\f5a0"}.fa-jedi{--fa:"\\f669"}.fa-poll,.fa-square-poll-vertical{--fa:"\\f681"}.fa-mug-hot{--fa:"\\f7b6"}.fa-battery-car,.fa-car-battery{--fa:"\\f5df"}.fa-gift{--fa:"\\f06b"}.fa-dice-two{--fa:"\\f528"}.fa-chess-queen{--fa:"\\f445"}.fa-glasses{--fa:"\\f530"}.fa-chess-board{--fa:"\\f43c"}.fa-building-circle-check{--fa:"\\e4d2"}.fa-person-chalkboard{--fa:"\\e53d"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\\f22b"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\\f255"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\\f151"}.fa-cloud-showers-water{--fa:"\\e4e4"}.fa-bar-chart,.fa-chart-bar{--fa:"\\f080"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\\e05e"}.fa-less-than-equal{--fa:"\\f537"}.fa-train{--fa:"\\f238"}.fa-eye-low-vision,.fa-low-vision{--fa:"\\f2a8"}.fa-crow{--fa:"\\f520"}.fa-sailboat{--fa:"\\e445"}.fa-window-restore{--fa:"\\f2d2"}.fa-plus-square,.fa-square-plus{--fa:"\\f0fe"}.fa-torii-gate{--fa:"\\f6a1"}.fa-frog{--fa:"\\f52e"}.fa-bucket{--fa:"\\e4cf"}.fa-image{--fa:"\\f03e"}.fa-microphone{--fa:"\\f130"}.fa-cow{--fa:"\\f6c8"}.fa-caret-up{--fa:"\\f0d8"}.fa-screwdriver{--fa:"\\f54a"}.fa-folder-closed{--fa:"\\e185"}.fa-house-tsunami{--fa:"\\e515"}.fa-square-nfi{--fa:"\\e576"}.fa-arrow-up-from-ground-water{--fa:"\\e4b5"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\\f57b"}.fa-square-binary{--fa:"\\e69b"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\\f2ea"}.fa-columns,.fa-table-columns{--fa:"\\f0db"}.fa-lemon{--fa:"\\f094"}.fa-head-side-mask{--fa:"\\e063"}.fa-handshake{--fa:"\\f2b5"}.fa-gem{--fa:"\\f3a5"}.fa-dolly,.fa-dolly-box{--fa:"\\f472"}.fa-smoking{--fa:"\\f48d"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\\f78c"}.fa-monument{--fa:"\\f5a6"}.fa-snowplow{--fa:"\\f7d2"}.fa-angle-double-right,.fa-angles-right{--fa:"\\f101"}.fa-cannabis{--fa:"\\f55f"}.fa-circle-play,.fa-play-circle{--fa:"\\f144"}.fa-tablets{--fa:"\\f490"}.fa-ethernet{--fa:"\\f796"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\\f153"}.fa-chair{--fa:"\\f6c0"}.fa-check-circle,.fa-circle-check{--fa:"\\f058"}.fa-circle-stop,.fa-stop-circle{--fa:"\\f28d"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\\f568"}.fa-plate-wheat{--fa:"\\e55a"}.fa-icicles{--fa:"\\f7ad"}.fa-person-shelter{--fa:"\\e54f"}.fa-neuter{--fa:"\\f22c"}.fa-id-badge{--fa:"\\f2c1"}.fa-marker{--fa:"\\f5a1"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\\f59a"}.fa-helicopter-symbol{--fa:"\\e502"}.fa-universal-access{--fa:"\\f29a"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\\f139"}.fa-lari-sign{--fa:"\\e1c8"}.fa-volcano{--fa:"\\f770"}.fa-person-walking-dashed-line-arrow-right{--fa:"\\e553"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\\f154"}.fa-viruses{--fa:"\\e076"}.fa-square-person-confined{--fa:"\\e577"}.fa-user-tie{--fa:"\\f508"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\\f175"}.fa-tent-arrow-down-to-line{--fa:"\\e57e"}.fa-certificate{--fa:"\\f0a3"}.fa-mail-reply-all,.fa-reply-all{--fa:"\\f122"}.fa-suitcase{--fa:"\\f0f2"}.fa-person-skating,.fa-skating{--fa:"\\f7c5"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\\f662"}.fa-camera-retro{--fa:"\\f083"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\\f0ab"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\\f56f"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\\f14c"}.fa-box-open{--fa:"\\f49e"}.fa-scroll{--fa:"\\f70e"}.fa-spa{--fa:"\\f5bb"}.fa-location-pin-lock{--fa:"\\e51f"}.fa-pause{--fa:"\\f04c"}.fa-hill-avalanche{--fa:"\\e507"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\\f2cb"}.fa-bomb{--fa:"\\f1e2"}.fa-registered{--fa:"\\f25d"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\\f2bb"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\\f516"}.fa-subscript{--fa:"\\f12c"}.fa-diamond-turn-right,.fa-directions{--fa:"\\f5eb"}.fa-burst{--fa:"\\e4dc"}.fa-house-laptop,.fa-laptop-house{--fa:"\\e066"}.fa-face-tired,.fa-tired{--fa:"\\f5c8"}.fa-money-bills{--fa:"\\e1f3"}.fa-smog{--fa:"\\f75f"}.fa-crutch{--fa:"\\f7f7"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\\f0ee"}.fa-palette{--fa:"\\f53f"}.fa-arrows-turn-right{--fa:"\\e4c0"}.fa-vest{--fa:"\\e085"}.fa-ferry{--fa:"\\e4ea"}.fa-arrows-down-to-people{--fa:"\\e4b9"}.fa-seedling,.fa-sprout{--fa:"\\f4d8"}.fa-arrows-alt-h,.fa-left-right{--fa:"\\f337"}.fa-boxes-packing{--fa:"\\e4c7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\\f0a8"}.fa-group-arrows-rotate{--fa:"\\e4f6"}.fa-bowl-food{--fa:"\\e4c6"}.fa-candy-cane{--fa:"\\f786"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\\f160"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\\f76c"}.fa-remove-format,.fa-text-slash{--fa:"\\f87d"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\\f4da"}.fa-file-word{--fa:"\\f1c2"}.fa-file-powerpoint{--fa:"\\f1c4"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\\f07e"}.fa-house-lock{--fa:"\\e510"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\\f0ed"}.fa-children{--fa:"\\e4e1"}.fa-blackboard,.fa-chalkboard{--fa:"\\f51b"}.fa-user-alt-slash,.fa-user-large-slash{--fa:"\\f4fa"}.fa-envelope-open{--fa:"\\f2b6"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:"\\e05f"}.fa-mattress-pillow{--fa:"\\e525"}.fa-guarani-sign{--fa:"\\e19a"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\\f021"}.fa-fire-extinguisher{--fa:"\\f134"}.fa-cruzeiro-sign{--fa:"\\e152"}.fa-greater-than-equal{--fa:"\\f532"}.fa-shield-alt,.fa-shield-halved{--fa:"\\f3ed"}.fa-atlas,.fa-book-atlas{--fa:"\\f558"}.fa-virus{--fa:"\\e074"}.fa-envelope-circle-check{--fa:"\\e4e8"}.fa-layer-group{--fa:"\\f5fd"}.fa-arrows-to-dot{--fa:"\\e4be"}.fa-archway{--fa:"\\f557"}.fa-heart-circle-check{--fa:"\\e4fd"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\\f6f1"}.fa-file-archive,.fa-file-zipper{--fa:"\\f1c6"}.fa-square{--fa:"\\f0c8"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\\f000"}.fa-couch{--fa:"\\f4b8"}.fa-cedi-sign{--fa:"\\e0df"}.fa-italic{--fa:"\\f033"}.fa-table-cells-column-lock{--fa:"\\e678"}.fa-church{--fa:"\\f51d"}.fa-comments-dollar{--fa:"\\f653"}.fa-democrat{--fa:"\\f747"}.fa-z{--fa:"\\5a"}.fa-person-skiing,.fa-skiing{--fa:"\\f7c9"}.fa-road-lock{--fa:"\\e567"}.fa-a{--fa:"\\41"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\\e03f"}.fa-feather-alt,.fa-feather-pointed{--fa:"\\f56b"}.fa-p{--fa:"\\50"}.fa-snowflake{--fa:"\\f2dc"}.fa-newspaper{--fa:"\\f1ea"}.fa-ad,.fa-rectangle-ad{--fa:"\\f641"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\\f0a9"}.fa-filter-circle-xmark{--fa:"\\e17b"}.fa-locust{--fa:"\\e520"}.fa-sort,.fa-unsorted{--fa:"\\f0dc"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\\f0cb"}.fa-person-dress-burst{--fa:"\\e544"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\\f53d"}.fa-vector-square{--fa:"\\f5cb"}.fa-bread-slice{--fa:"\\f7ec"}.fa-language{--fa:"\\f1ab"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\\f598"}.fa-filter{--fa:"\\f0b0"}.fa-question{--fa:"\\3f"}.fa-file-signature{--fa:"\\f573"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\\f0b2"}.fa-house-chimney-user{--fa:"\\e065"}.fa-hand-holding-heart{--fa:"\\f4be"}.fa-puzzle-piece{--fa:"\\f12e"}.fa-money-check{--fa:"\\f53c"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\\f5c0"}.fa-code{--fa:"\\f121"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\\f7a0"}.fa-building-circle-exclamation{--fa:"\\e4d3"}.fa-magnifying-glass-chart{--fa:"\\e522"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\\f08e"}.fa-cubes-stacked{--fa:"\\e4e6"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\\f159"}.fa-virus-covid{--fa:"\\e4a8"}.fa-austral-sign{--fa:"\\e0a9"}.fa-f{--fa:"\\46"}.fa-leaf{--fa:"\\f06c"}.fa-road{--fa:"\\f018"}.fa-cab,.fa-taxi{--fa:"\\f1ba"}.fa-person-circle-plus{--fa:"\\e541"}.fa-chart-pie,.fa-pie-chart{--fa:"\\f200"}.fa-bolt-lightning{--fa:"\\e0b7"}.fa-sack-xmark{--fa:"\\e56a"}.fa-file-excel{--fa:"\\f1c3"}.fa-file-contract{--fa:"\\f56c"}.fa-fish-fins{--fa:"\\e4f2"}.fa-building-flag{--fa:"\\e4d5"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\\f582"}.fa-object-ungroup{--fa:"\\f248"}.fa-poop{--fa:"\\f619"}.fa-location-pin,.fa-map-marker{--fa:"\\f041"}.fa-kaaba{--fa:"\\f66b"}.fa-toilet-paper{--fa:"\\f71e"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\\f807"}.fa-eject{--fa:"\\f052"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\\f35a"}.fa-plane-circle-check{--fa:"\\e555"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\\f5a5"}.fa-object-group{--fa:"\\f247"}.fa-chart-line,.fa-line-chart{--fa:"\\f201"}.fa-mask-ventilator{--fa:"\\e524"}.fa-arrow-right{--fa:"\\f061"}.fa-map-signs,.fa-signs-post{--fa:"\\f277"}.fa-cash-register{--fa:"\\f788"}.fa-person-circle-question{--fa:"\\e542"}.fa-h{--fa:"\\48"}.fa-tarp{--fa:"\\e57b"}.fa-screwdriver-wrench,.fa-tools{--fa:"\\f7d9"}.fa-arrows-to-eye{--fa:"\\e4bf"}.fa-plug-circle-bolt{--fa:"\\e55b"}.fa-heart{--fa:"\\f004"}.fa-mars-and-venus{--fa:"\\f224"}.fa-home-user,.fa-house-user{--fa:"\\e1b0"}.fa-dumpster-fire{--fa:"\\f794"}.fa-house-crack{--fa:"\\e3b1"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\\f561"}.fa-face-surprise,.fa-surprise{--fa:"\\f5c2"}.fa-bottle-water{--fa:"\\e4c5"}.fa-circle-pause,.fa-pause-circle{--fa:"\\f28b"}.fa-toilet-paper-slash{--fa:"\\e072"}.fa-apple-alt,.fa-apple-whole{--fa:"\\f5d1"}.fa-kitchen-set{--fa:"\\e51a"}.fa-r{--fa:"\\52"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\\f2ca"}.fa-cube{--fa:"\\f1b2"}.fa-bitcoin-sign{--fa:"\\e0b4"}.fa-shield-dog{--fa:"\\e573"}.fa-solar-panel{--fa:"\\f5ba"}.fa-lock-open{--fa:"\\f3c1"}.fa-elevator{--fa:"\\e16d"}.fa-money-bill-transfer{--fa:"\\e528"}.fa-money-bill-trend-up{--fa:"\\e529"}.fa-house-flood-water-circle-arrow-right{--fa:"\\e50f"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\\f682"}.fa-circle{--fa:"\\f111"}.fa-backward-fast,.fa-fast-backward{--fa:"\\f049"}.fa-recycle{--fa:"\\f1b8"}.fa-user-astronaut{--fa:"\\f4fb"}.fa-plane-slash{--fa:"\\e069"}.fa-trademark{--fa:"\\f25c"}.fa-basketball,.fa-basketball-ball{--fa:"\\f434"}.fa-satellite-dish{--fa:"\\f7c0"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\\f35b"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\\f3cd"}.fa-volume-high,.fa-volume-up{--fa:"\\f028"}.fa-users-rays{--fa:"\\e593"}.fa-wallet{--fa:"\\f555"}.fa-clipboard-check{--fa:"\\f46c"}.fa-file-audio{--fa:"\\f1c7"}.fa-burger,.fa-hamburger{--fa:"\\f805"}.fa-wrench{--fa:"\\f0ad"}.fa-bugs{--fa:"\\e4d0"}.fa-rupee,.fa-rupee-sign{--fa:"\\f156"}.fa-file-image{--fa:"\\f1c5"}.fa-circle-question,.fa-question-circle{--fa:"\\f059"}.fa-plane-departure{--fa:"\\f5b0"}.fa-handshake-slash{--fa:"\\e060"}.fa-book-bookmark{--fa:"\\e0bb"}.fa-code-branch{--fa:"\\f126"}.fa-hat-cowboy{--fa:"\\f8c0"}.fa-bridge{--fa:"\\e4c8"}.fa-phone-alt,.fa-phone-flip{--fa:"\\f879"}.fa-truck-front{--fa:"\\e2b7"}.fa-cat{--fa:"\\f6be"}.fa-anchor-circle-exclamation{--fa:"\\e4ab"}.fa-truck-field{--fa:"\\e58d"}.fa-route{--fa:"\\f4d7"}.fa-clipboard-question{--fa:"\\e4e3"}.fa-panorama{--fa:"\\e209"}.fa-comment-medical{--fa:"\\f7f5"}.fa-teeth-open{--fa:"\\f62f"}.fa-file-circle-minus{--fa:"\\e4ed"}.fa-tags{--fa:"\\f02c"}.fa-wine-glass{--fa:"\\f4e3"}.fa-fast-forward,.fa-forward-fast{--fa:"\\f050"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\\f5a4"}.fa-parking,.fa-square-parking{--fa:"\\f540"}.fa-house-signal{--fa:"\\e012"}.fa-bars-progress,.fa-tasks-alt{--fa:"\\f828"}.fa-faucet-drip{--fa:"\\e006"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\\f474"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\\f54d"}.fa-terminal{--fa:"\\f120"}.fa-mobile-button{--fa:"\\f10b"}.fa-house-medical-flag{--fa:"\\e514"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\\f291"}.fa-tape{--fa:"\\f4db"}.fa-bus-alt,.fa-bus-simple{--fa:"\\f55e"}.fa-eye{--fa:"\\f06e"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\\f5b3"}.fa-audio-description{--fa:"\\f29e"}.fa-person-military-to-person{--fa:"\\e54c"}.fa-file-shield{--fa:"\\e4f0"}.fa-user-slash{--fa:"\\f506"}.fa-pen{--fa:"\\f304"}.fa-tower-observation{--fa:"\\e586"}.fa-file-code{--fa:"\\f1c9"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\\f012"}.fa-bus{--fa:"\\f207"}.fa-heart-circle-xmark{--fa:"\\e501"}.fa-home-lg,.fa-house-chimney{--fa:"\\e3af"}.fa-window-maximize{--fa:"\\f2d0"}.fa-face-frown,.fa-frown{--fa:"\\f119"}.fa-prescription{--fa:"\\f5b1"}.fa-shop,.fa-store-alt{--fa:"\\f54f"}.fa-floppy-disk,.fa-save{--fa:"\\f0c7"}.fa-vihara{--fa:"\\f6a7"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\\f515"}.fa-sort-asc,.fa-sort-up{--fa:"\\f0de"}.fa-comment-dots,.fa-commenting{--fa:"\\f4ad"}.fa-plant-wilt{--fa:"\\e5aa"}.fa-diamond{--fa:"\\f219"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\\f585"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\\f4c0"}.fa-chart-diagram{--fa:"\\e695"}.fa-bacterium{--fa:"\\e05a"}.fa-hand-pointer{--fa:"\\f25a"}.fa-drum-steelpan{--fa:"\\f56a"}.fa-hand-scissors{--fa:"\\f257"}.fa-hands-praying,.fa-praying-hands{--fa:"\\f684"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\\f01e"}.fa-biohazard{--fa:"\\f780"}.fa-location,.fa-location-crosshairs{--fa:"\\f601"}.fa-mars-double{--fa:"\\f227"}.fa-child-dress{--fa:"\\e59c"}.fa-users-between-lines{--fa:"\\e591"}.fa-lungs-virus{--fa:"\\e067"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\\f588"}.fa-phone{--fa:"\\f095"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\\f273"}.fa-child-reaching{--fa:"\\e59d"}.fa-head-side-virus{--fa:"\\e064"}.fa-user-cog,.fa-user-gear{--fa:"\\f4fe"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\\f163"}.fa-door-closed{--fa:"\\f52a"}.fa-shield-virus{--fa:"\\e06c"}.fa-dice-six{--fa:"\\f526"}.fa-mosquito-net{--fa:"\\e52c"}.fa-file-fragment{--fa:"\\e697"}.fa-bridge-water{--fa:"\\e4ce"}.fa-person-booth{--fa:"\\f756"}.fa-text-width{--fa:"\\f035"}.fa-hat-wizard{--fa:"\\f6e8"}.fa-pen-fancy{--fa:"\\f5ac"}.fa-digging,.fa-person-digging{--fa:"\\f85e"}.fa-trash{--fa:"\\f1f8"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\\f629"}.fa-book-medical{--fa:"\\f7e6"}.fa-poo{--fa:"\\f2fe"}.fa-quote-right,.fa-quote-right-alt{--fa:"\\f10e"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\\f553"}.fa-cubes{--fa:"\\f1b3"}.fa-divide{--fa:"\\f529"}.fa-tenge,.fa-tenge-sign{--fa:"\\f7d7"}.fa-headphones{--fa:"\\f025"}.fa-hands-holding{--fa:"\\f4c2"}.fa-hands-clapping{--fa:"\\e1a8"}.fa-republican{--fa:"\\f75e"}.fa-arrow-left{--fa:"\\f060"}.fa-person-circle-xmark{--fa:"\\e543"}.fa-ruler{--fa:"\\f545"}.fa-align-left{--fa:"\\f036"}.fa-dice-d6{--fa:"\\f6d1"}.fa-restroom{--fa:"\\f7bd"}.fa-j{--fa:"\\4a"}.fa-users-viewfinder{--fa:"\\e595"}.fa-file-video{--fa:"\\f1c8"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\\f35d"}.fa-table-cells,.fa-th{--fa:"\\f00a"}.fa-file-pdf{--fa:"\\f1c1"}.fa-bible,.fa-book-bible{--fa:"\\f647"}.fa-o{--fa:"\\4f"}.fa-medkit,.fa-suitcase-medical{--fa:"\\f0fa"}.fa-user-secret{--fa:"\\f21b"}.fa-otter{--fa:"\\f700"}.fa-female,.fa-person-dress{--fa:"\\f182"}.fa-comment-dollar{--fa:"\\f651"}.fa-briefcase-clock,.fa-business-time{--fa:"\\f64a"}.fa-table-cells-large,.fa-th-large{--fa:"\\f009"}.fa-book-tanakh,.fa-tanakh{--fa:"\\f827"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\\f2a0"}.fa-hat-cowboy-side{--fa:"\\f8c1"}.fa-clipboard-user{--fa:"\\f7f3"}.fa-child{--fa:"\\f1ae"}.fa-lira-sign{--fa:"\\f195"}.fa-satellite{--fa:"\\f7bf"}.fa-plane-lock{--fa:"\\e558"}.fa-tag{--fa:"\\f02b"}.fa-comment{--fa:"\\f075"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\\f1fd"}.fa-envelope{--fa:"\\f0e0"}.fa-angle-double-up,.fa-angles-up{--fa:"\\f102"}.fa-paperclip{--fa:"\\f0c6"}.fa-arrow-right-to-city{--fa:"\\e4b3"}.fa-ribbon{--fa:"\\f4d6"}.fa-lungs{--fa:"\\f604"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\\f887"}.fa-litecoin-sign{--fa:"\\e1d3"}.fa-border-none{--fa:"\\f850"}.fa-circle-nodes{--fa:"\\e4e2"}.fa-parachute-box{--fa:"\\f4cd"}.fa-indent{--fa:"\\f03c"}.fa-truck-field-un{--fa:"\\e58e"}.fa-hourglass,.fa-hourglass-empty{--fa:"\\f254"}.fa-mountain{--fa:"\\f6fc"}.fa-user-doctor,.fa-user-md{--fa:"\\f0f0"}.fa-circle-info,.fa-info-circle{--fa:"\\f05a"}.fa-cloud-meatball{--fa:"\\f73b"}.fa-camera,.fa-camera-alt{--fa:"\\f030"}.fa-square-virus{--fa:"\\e578"}.fa-meteor{--fa:"\\f753"}.fa-car-on{--fa:"\\e4dd"}.fa-sleigh{--fa:"\\f7cc"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\\f162"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\\f4c1"}.fa-water{--fa:"\\f773"}.fa-calendar-check{--fa:"\\f274"}.fa-braille{--fa:"\\f2a1"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\\f486"}.fa-landmark{--fa:"\\f66f"}.fa-truck{--fa:"\\f0d1"}.fa-crosshairs{--fa:"\\f05b"}.fa-person-cane{--fa:"\\e53c"}.fa-tent{--fa:"\\e57d"}.fa-vest-patches{--fa:"\\e086"}.fa-check-double{--fa:"\\f560"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\\f15d"}.fa-money-bill-wheat{--fa:"\\e52a"}.fa-cookie{--fa:"\\f563"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\\f0e2"}.fa-hard-drive,.fa-hdd{--fa:"\\f0a0"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\\f586"}.fa-dumbbell{--fa:"\\f44b"}.fa-list-alt,.fa-rectangle-list{--fa:"\\f022"}.fa-tarp-droplet{--fa:"\\e57c"}.fa-house-medical-circle-check{--fa:"\\e511"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\\f7ca"}.fa-calendar-plus{--fa:"\\f271"}.fa-plane-arrival{--fa:"\\f5af"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\\f359"}.fa-subway,.fa-train-subway{--fa:"\\f239"}.fa-chart-gantt{--fa:"\\e0e4"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\\e1bc"}.fa-crop-alt,.fa-crop-simple{--fa:"\\f565"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\\f3d1"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\\f30a"}.fa-dna{--fa:"\\f471"}.fa-virus-slash{--fa:"\\e075"}.fa-minus,.fa-subtract{--fa:"\\f068"}.fa-chess{--fa:"\\f439"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\\f177"}.fa-plug-circle-check{--fa:"\\e55c"}.fa-street-view{--fa:"\\f21d"}.fa-franc-sign{--fa:"\\e18f"}.fa-volume-off{--fa:"\\f026"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\\f2a3"}.fa-cog,.fa-gear{--fa:"\\f013"}.fa-droplet-slash,.fa-tint-slash{--fa:"\\f5c7"}.fa-mosque{--fa:"\\f678"}.fa-mosquito{--fa:"\\e52b"}.fa-star-of-david{--fa:"\\f69a"}.fa-person-military-rifle{--fa:"\\e54b"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\\f07a"}.fa-vials{--fa:"\\f493"}.fa-plug-circle-plus{--fa:"\\e55f"}.fa-place-of-worship{--fa:"\\f67f"}.fa-grip-vertical{--fa:"\\f58e"}.fa-hexagon-nodes{--fa:"\\e699"}.fa-arrow-turn-up,.fa-level-up{--fa:"\\f148"}.fa-u{--fa:"\\55"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\\f698"}.fa-clock,.fa-clock-four{--fa:"\\f017"}.fa-backward-step,.fa-step-backward{--fa:"\\f048"}.fa-pallet{--fa:"\\f482"}.fa-faucet{--fa:"\\e005"}.fa-baseball-bat-ball{--fa:"\\f432"}.fa-s{--fa:"\\53"}.fa-timeline{--fa:"\\e29c"}.fa-keyboard{--fa:"\\f11c"}.fa-caret-down{--fa:"\\f0d7"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\\f7f2"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\\f2c8"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\\f3cf"}.fa-plane-up{--fa:"\\e22d"}.fa-piggy-bank{--fa:"\\f4d3"}.fa-battery-3,.fa-battery-half{--fa:"\\f242"}.fa-mountain-city{--fa:"\\e52e"}.fa-coins{--fa:"\\f51e"}.fa-khanda{--fa:"\\f66d"}.fa-sliders,.fa-sliders-h{--fa:"\\f1de"}.fa-folder-tree{--fa:"\\f802"}.fa-network-wired{--fa:"\\f6ff"}.fa-map-pin{--fa:"\\f276"}.fa-hamsa{--fa:"\\f665"}.fa-cent-sign{--fa:"\\e3f5"}.fa-flask{--fa:"\\f0c3"}.fa-person-pregnant{--fa:"\\e31e"}.fa-wand-sparkles{--fa:"\\f72b"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\\f142"}.fa-ticket{--fa:"\\f145"}.fa-power-off{--fa:"\\f011"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\\f30b"}.fa-flag-usa{--fa:"\\f74d"}.fa-laptop-file{--fa:"\\e51d"}.fa-teletype,.fa-tty{--fa:"\\f1e4"}.fa-diagram-next{--fa:"\\e476"}.fa-person-rifle{--fa:"\\e54e"}.fa-house-medical-circle-exclamation{--fa:"\\e512"}.fa-closed-captioning{--fa:"\\f20a"}.fa-hiking,.fa-person-hiking{--fa:"\\f6ec"}.fa-venus-double{--fa:"\\f226"}.fa-images{--fa:"\\f302"}.fa-calculator{--fa:"\\f1ec"}.fa-people-pulling{--fa:"\\e535"}.fa-n{--fa:"\\4e"}.fa-cable-car,.fa-tram{--fa:"\\f7da"}.fa-cloud-rain{--fa:"\\f73d"}.fa-building-circle-xmark{--fa:"\\e4d4"}.fa-ship{--fa:"\\f21a"}.fa-arrows-down-to-line{--fa:"\\e4b8"}.fa-download{--fa:"\\f019"}.fa-face-grin,.fa-grin{--fa:"\\f580"}.fa-backspace,.fa-delete-left{--fa:"\\f55a"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\\f1fb"}.fa-file-circle-check{--fa:"\\e5a0"}.fa-forward{--fa:"\\f04e"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\\f3ce"}.fa-face-meh,.fa-meh{--fa:"\\f11a"}.fa-align-center{--fa:"\\f037"}.fa-book-dead,.fa-book-skull{--fa:"\\f6b7"}.fa-drivers-license,.fa-id-card{--fa:"\\f2c2"}.fa-dedent,.fa-outdent{--fa:"\\f03b"}.fa-heart-circle-exclamation{--fa:"\\e4fe"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\\f015"}.fa-calendar-week{--fa:"\\f784"}.fa-laptop-medical{--fa:"\\f812"}.fa-b{--fa:"\\42"}.fa-file-medical{--fa:"\\f477"}.fa-dice-one{--fa:"\\f525"}.fa-kiwi-bird{--fa:"\\f535"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\\f0ec"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\\f2f9"}.fa-cutlery,.fa-utensils{--fa:"\\f2e7"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\\f161"}.fa-mill-sign{--fa:"\\e1ed"}.fa-bowl-rice{--fa:"\\e2eb"}.fa-skull{--fa:"\\f54c"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\\f519"}.fa-truck-pickup{--fa:"\\f63c"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\\f30c"}.fa-stop{--fa:"\\f04d"}.fa-code-merge{--fa:"\\f387"}.fa-upload{--fa:"\\f093"}.fa-hurricane{--fa:"\\f751"}.fa-mound{--fa:"\\e52d"}.fa-toilet-portable{--fa:"\\e583"}.fa-compact-disc{--fa:"\\f51f"}.fa-file-arrow-down,.fa-file-download{--fa:"\\f56d"}.fa-caravan{--fa:"\\f8ff"}.fa-shield-cat{--fa:"\\e572"}.fa-bolt,.fa-zap{--fa:"\\f0e7"}.fa-glass-water{--fa:"\\e4f4"}.fa-oil-well{--fa:"\\e532"}.fa-vault{--fa:"\\e2c5"}.fa-mars{--fa:"\\f222"}.fa-toilet{--fa:"\\f7d8"}.fa-plane-circle-xmark{--fa:"\\e557"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\\f158"}.fa-sun{--fa:"\\f185"}.fa-guitar{--fa:"\\f7a6"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\\f59c"}.fa-horse-head{--fa:"\\f7ab"}.fa-bore-hole{--fa:"\\e4c3"}.fa-industry{--fa:"\\f275"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\\f358"}.fa-arrows-turn-to-dots{--fa:"\\e4c1"}.fa-florin-sign{--fa:"\\e184"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\\f884"}.fa-less-than{--fa:"\\3c"}.fa-angle-down{--fa:"\\f107"}.fa-car-tunnel{--fa:"\\e4de"}.fa-head-side-cough{--fa:"\\e061"}.fa-grip-lines{--fa:"\\f7a4"}.fa-thumbs-down{--fa:"\\f165"}.fa-user-lock{--fa:"\\f502"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\\f178"}.fa-anchor-circle-xmark{--fa:"\\e4ac"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\\f141"}.fa-chess-pawn{--fa:"\\f443"}.fa-first-aid,.fa-kit-medical{--fa:"\\f479"}.fa-person-through-window{--fa:"\\e5a9"}.fa-toolbox{--fa:"\\f552"}.fa-hands-holding-circle{--fa:"\\e4fb"}.fa-bug{--fa:"\\f188"}.fa-credit-card,.fa-credit-card-alt{--fa:"\\f09d"}.fa-automobile,.fa-car{--fa:"\\f1b9"}.fa-hand-holding-hand{--fa:"\\e4f7"}.fa-book-open-reader,.fa-book-reader{--fa:"\\f5da"}.fa-mountain-sun{--fa:"\\e52f"}.fa-arrows-left-right-to-line{--fa:"\\e4ba"}.fa-dice-d20{--fa:"\\f6cf"}.fa-truck-droplet{--fa:"\\e58c"}.fa-file-circle-xmark{--fa:"\\e5a1"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\\e040"}.fa-medal{--fa:"\\f5a2"}.fa-bed{--fa:"\\f236"}.fa-h-square,.fa-square-h{--fa:"\\f0fd"}.fa-podcast{--fa:"\\f2ce"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\\f2c7"}.fa-bell{--fa:"\\f0f3"}.fa-superscript{--fa:"\\f12b"}.fa-plug-circle-xmark{--fa:"\\e560"}.fa-star-of-life{--fa:"\\f621"}.fa-phone-slash{--fa:"\\f3dd"}.fa-paint-roller{--fa:"\\f5aa"}.fa-hands-helping,.fa-handshake-angle{--fa:"\\f4c4"}.fa-location-dot,.fa-map-marker-alt{--fa:"\\f3c5"}.fa-file{--fa:"\\f15b"}.fa-greater-than{--fa:"\\3e"}.fa-person-swimming,.fa-swimmer{--fa:"\\f5c4"}.fa-arrow-down{--fa:"\\f063"}.fa-droplet,.fa-tint{--fa:"\\f043"}.fa-eraser{--fa:"\\f12d"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\\f57d"}.fa-person-burst{--fa:"\\e53b"}.fa-dove{--fa:"\\f4ba"}.fa-battery-0,.fa-battery-empty{--fa:"\\f244"}.fa-socks{--fa:"\\f696"}.fa-inbox{--fa:"\\f01c"}.fa-section{--fa:"\\e447"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\\f625"}.fa-envelope-open-text{--fa:"\\f658"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\\f0f8"}.fa-wine-bottle{--fa:"\\f72f"}.fa-chess-rook{--fa:"\\f447"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\\f550"}.fa-dharmachakra{--fa:"\\f655"}.fa-hotdog{--fa:"\\f80f"}.fa-blind,.fa-person-walking-with-cane{--fa:"\\f29d"}.fa-drum{--fa:"\\f569"}.fa-ice-cream{--fa:"\\f810"}.fa-heart-circle-bolt{--fa:"\\e4fc"}.fa-fax{--fa:"\\f1ac"}.fa-paragraph{--fa:"\\f1dd"}.fa-check-to-slot,.fa-vote-yea{--fa:"\\f772"}.fa-star-half{--fa:"\\f089"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\\f468"}.fa-chain,.fa-link{--fa:"\\f0c1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\\f2a2"}.fa-tree-city{--fa:"\\e587"}.fa-play{--fa:"\\f04b"}.fa-font{--fa:"\\f031"}.fa-table-cells-row-lock{--fa:"\\e67a"}.fa-rupiah-sign{--fa:"\\e23d"}.fa-magnifying-glass,.fa-search{--fa:"\\f002"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\\f45d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\\f470"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\\f82a"}.fa-naira-sign{--fa:"\\e1f6"}.fa-cart-arrow-down{--fa:"\\f218"}.fa-walkie-talkie{--fa:"\\f8ef"}.fa-file-edit,.fa-file-pen{--fa:"\\f31c"}.fa-receipt{--fa:"\\f543"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\\f14b"}.fa-suitcase-rolling{--fa:"\\f5c1"}.fa-person-circle-exclamation{--fa:"\\e53f"}.fa-chevron-down{--fa:"\\f078"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\\f240"}.fa-skull-crossbones{--fa:"\\f714"}.fa-code-compare{--fa:"\\e13a"}.fa-list-dots,.fa-list-ul{--fa:"\\f0ca"}.fa-school-lock{--fa:"\\e56f"}.fa-tower-cell{--fa:"\\e585"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\\f309"}.fa-ranking-star{--fa:"\\e561"}.fa-chess-king{--fa:"\\f43f"}.fa-person-harassing{--fa:"\\e549"}.fa-brazilian-real-sign{--fa:"\\e46c"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\\f752"}.fa-arrow-up{--fa:"\\f062"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\\f26c"}.fa-shrimp{--fa:"\\e448"}.fa-list-check,.fa-tasks{--fa:"\\f0ae"}.fa-jug-detergent{--fa:"\\e519"}.fa-circle-user,.fa-user-circle{--fa:"\\f2bd"}.fa-user-shield{--fa:"\\f505"}.fa-wind{--fa:"\\f72e"}.fa-car-burst,.fa-car-crash{--fa:"\\f5e1"}.fa-y{--fa:"\\59"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\\f7ce"}.fa-shipping-fast,.fa-truck-fast{--fa:"\\f48b"}.fa-fish{--fa:"\\f578"}.fa-user-graduate{--fa:"\\f501"}.fa-adjust,.fa-circle-half-stroke{--fa:"\\f042"}.fa-clapperboard{--fa:"\\e131"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\\f7ba"}.fa-baseball,.fa-baseball-ball{--fa:"\\f433"}.fa-jet-fighter-up{--fa:"\\e518"}.fa-diagram-project,.fa-project-diagram{--fa:"\\f542"}.fa-copy{--fa:"\\f0c5"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\\f6a9"}.fa-hand-sparkles{--fa:"\\e05d"}.fa-grip,.fa-grip-horizontal{--fa:"\\f58d"}.fa-share-from-square,.fa-share-square{--fa:"\\f14d"}.fa-child-combatant,.fa-child-rifle{--fa:"\\e4e0"}.fa-gun{--fa:"\\e19b"}.fa-phone-square,.fa-square-phone{--fa:"\\f098"}.fa-add,.fa-plus{--fa:"\\2b"}.fa-expand{--fa:"\\f065"}.fa-computer{--fa:"\\e4e5"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\\f00d"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\\f047"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\\f51c"}.fa-peso-sign{--fa:"\\e222"}.fa-building-shield{--fa:"\\e4d8"}.fa-baby{--fa:"\\f77c"}.fa-users-line{--fa:"\\e592"}.fa-quote-left,.fa-quote-left-alt{--fa:"\\f10d"}.fa-tractor{--fa:"\\f722"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\\f829"}.fa-arrow-down-up-lock{--fa:"\\e4b0"}.fa-lines-leaning{--fa:"\\e51e"}.fa-ruler-combined{--fa:"\\f546"}.fa-copyright{--fa:"\\f1f9"}.fa-equals{--fa:"\\3d"}.fa-blender{--fa:"\\f517"}.fa-teeth{--fa:"\\f62e"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\\f20b"}.fa-map{--fa:"\\f279"}.fa-rocket{--fa:"\\f135"}.fa-photo-film,.fa-photo-video{--fa:"\\f87c"}.fa-folder-minus{--fa:"\\f65d"}.fa-hexagon-nodes-bolt{--fa:"\\e69a"}.fa-store{--fa:"\\f54e"}.fa-arrow-trend-up{--fa:"\\e098"}.fa-plug-circle-minus{--fa:"\\e55e"}.fa-sign,.fa-sign-hanging{--fa:"\\f4d9"}.fa-bezier-curve{--fa:"\\f55b"}.fa-bell-slash{--fa:"\\f1f6"}.fa-tablet,.fa-tablet-android{--fa:"\\f3fb"}.fa-school-flag{--fa:"\\e56e"}.fa-fill{--fa:"\\f575"}.fa-angle-up{--fa:"\\f106"}.fa-drumstick-bite{--fa:"\\f6d7"}.fa-holly-berry{--fa:"\\f7aa"}.fa-chevron-left{--fa:"\\f053"}.fa-bacteria{--fa:"\\e059"}.fa-hand-lizard{--fa:"\\f258"}.fa-notdef{--fa:"\\e1fe"}.fa-disease{--fa:"\\f7fa"}.fa-briefcase-medical{--fa:"\\f469"}.fa-genderless{--fa:"\\f22d"}.fa-chevron-right{--fa:"\\f054"}.fa-retweet{--fa:"\\f079"}.fa-car-alt,.fa-car-rear{--fa:"\\f5de"}.fa-pump-soap{--fa:"\\e06b"}.fa-video-slash{--fa:"\\f4e2"}.fa-battery-2,.fa-battery-quarter{--fa:"\\f243"}.fa-radio{--fa:"\\f8d7"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\\f77d"}.fa-traffic-light{--fa:"\\f637"}.fa-thermometer{--fa:"\\f491"}.fa-vr-cardboard{--fa:"\\f729"}.fa-hand-middle-finger{--fa:"\\f806"}.fa-percent,.fa-percentage{--fa:"\\25"}.fa-truck-moving{--fa:"\\f4df"}.fa-glass-water-droplet{--fa:"\\e4f5"}.fa-display{--fa:"\\e163"}.fa-face-smile,.fa-smile{--fa:"\\f118"}.fa-thumb-tack,.fa-thumbtack{--fa:"\\f08d"}.fa-trophy{--fa:"\\f091"}.fa-person-praying,.fa-pray{--fa:"\\f683"}.fa-hammer{--fa:"\\f6e3"}.fa-hand-peace{--fa:"\\f25b"}.fa-rotate,.fa-sync-alt{--fa:"\\f2f1"}.fa-spinner{--fa:"\\f110"}.fa-robot{--fa:"\\f544"}.fa-peace{--fa:"\\f67c"}.fa-cogs,.fa-gears{--fa:"\\f085"}.fa-warehouse{--fa:"\\f494"}.fa-arrow-up-right-dots{--fa:"\\e4b7"}.fa-splotch{--fa:"\\f5bc"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\\f584"}.fa-dice-four{--fa:"\\f524"}.fa-sim-card{--fa:"\\f7c4"}.fa-transgender,.fa-transgender-alt{--fa:"\\f225"}.fa-mercury{--fa:"\\f223"}.fa-arrow-turn-down,.fa-level-down{--fa:"\\f149"}.fa-person-falling-burst{--fa:"\\e547"}.fa-award{--fa:"\\f559"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\\f3ff"}.fa-building{--fa:"\\f1ad"}.fa-angle-double-left,.fa-angles-left{--fa:"\\f100"}.fa-qrcode{--fa:"\\f029"}.fa-clock-rotate-left,.fa-history{--fa:"\\f1da"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\\f583"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\\f56e"}.fa-shield,.fa-shield-blank{--fa:"\\f132"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\\f885"}.fa-comment-nodes{--fa:"\\e696"}.fa-house-medical{--fa:"\\e3b2"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\\f450"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\\f137"}.fa-house-chimney-window{--fa:"\\e00d"}.fa-pen-nib{--fa:"\\f5ad"}.fa-tent-arrow-turn-left{--fa:"\\e580"}.fa-tents{--fa:"\\e582"}.fa-magic,.fa-wand-magic{--fa:"\\f0d0"}.fa-dog{--fa:"\\f6d3"}.fa-carrot{--fa:"\\f787"}.fa-moon{--fa:"\\f186"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\\f5ce"}.fa-cheese{--fa:"\\f7ef"}.fa-yin-yang{--fa:"\\f6ad"}.fa-music{--fa:"\\f001"}.fa-code-commit{--fa:"\\f386"}.fa-temperature-low{--fa:"\\f76b"}.fa-biking,.fa-person-biking{--fa:"\\f84a"}.fa-broom{--fa:"\\f51a"}.fa-shield-heart{--fa:"\\e574"}.fa-gopuram{--fa:"\\f664"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\\e47b"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\\f2d3"}.fa-hashtag{--fa:"\\23"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\\f424"}.fa-oil-can{--fa:"\\f613"}.fa-t{--fa:"\\54"}.fa-hippo{--fa:"\\f6ed"}.fa-chart-column{--fa:"\\e0e3"}.fa-infinity{--fa:"\\f534"}.fa-vial-circle-check{--fa:"\\e596"}.fa-person-arrow-down-to-line{--fa:"\\e538"}.fa-voicemail{--fa:"\\f897"}.fa-fan{--fa:"\\f863"}.fa-person-walking-luggage{--fa:"\\e554"}.fa-arrows-alt-v,.fa-up-down{--fa:"\\f338"}.fa-cloud-moon-rain{--fa:"\\f73c"}.fa-calendar{--fa:"\\f133"}.fa-trailer{--fa:"\\e041"}.fa-bahai,.fa-haykal{--fa:"\\f666"}.fa-sd-card{--fa:"\\f7c2"}.fa-dragon{--fa:"\\f6d5"}.fa-shoe-prints{--fa:"\\f54b"}.fa-circle-plus,.fa-plus-circle{--fa:"\\f055"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\\f58b"}.fa-hand-holding{--fa:"\\f4bd"}.fa-plug-circle-exclamation{--fa:"\\e55d"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\\f127"}.fa-clone{--fa:"\\f24d"}.fa-person-walking-arrow-loop-left{--fa:"\\e551"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\\f882"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\\f7e4"}.fa-tornado{--fa:"\\f76f"}.fa-file-circle-plus{--fa:"\\e494"}.fa-book-quran,.fa-quran{--fa:"\\f687"}.fa-anchor{--fa:"\\f13d"}.fa-border-all{--fa:"\\f84c"}.fa-angry,.fa-face-angry{--fa:"\\f556"}.fa-cookie-bite{--fa:"\\f564"}.fa-arrow-trend-down{--fa:"\\e097"}.fa-feed,.fa-rss{--fa:"\\f09e"}.fa-draw-polygon{--fa:"\\f5ee"}.fa-balance-scale,.fa-scale-balanced{--fa:"\\f24e"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\\f62a"}.fa-shower{--fa:"\\f2cc"}.fa-desktop,.fa-desktop-alt{--fa:"\\f390"}.fa-m{--fa:"\\4d"}.fa-table-list,.fa-th-list{--fa:"\\f00b"}.fa-comment-sms,.fa-sms{--fa:"\\f7cd"}.fa-book{--fa:"\\f02d"}.fa-user-plus{--fa:"\\f234"}.fa-check{--fa:"\\f00c"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\\f241"}.fa-house-circle-check{--fa:"\\e509"}.fa-angle-left{--fa:"\\f104"}.fa-diagram-successor{--fa:"\\e47a"}.fa-truck-arrow-right{--fa:"\\e58b"}.fa-arrows-split-up-and-left{--fa:"\\e4bc"}.fa-fist-raised,.fa-hand-fist{--fa:"\\f6de"}.fa-cloud-moon{--fa:"\\f6c3"}.fa-briefcase{--fa:"\\f0b1"}.fa-person-falling{--fa:"\\e546"}.fa-image-portrait,.fa-portrait{--fa:"\\f3e0"}.fa-user-tag{--fa:"\\f507"}.fa-rug{--fa:"\\e569"}.fa-earth-europe,.fa-globe-europe{--fa:"\\f7a2"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\\f59d"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\\f410"}.fa-baht-sign{--fa:"\\e0ac"}.fa-book-open{--fa:"\\f518"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\\f66a"}.fa-handcuffs{--fa:"\\e4f8"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\\f071"}.fa-database{--fa:"\\f1c0"}.fa-mail-forward,.fa-share{--fa:"\\f064"}.fa-bottle-droplet{--fa:"\\e4c4"}.fa-mask-face{--fa:"\\e1d7"}.fa-hill-rockslide{--fa:"\\e508"}.fa-exchange-alt,.fa-right-left{--fa:"\\f362"}.fa-paper-plane{--fa:"\\f1d8"}.fa-road-circle-exclamation{--fa:"\\e565"}.fa-dungeon{--fa:"\\f6d9"}.fa-align-right{--fa:"\\f038"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\\f53b"}.fa-life-ring{--fa:"\\f1cd"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\\f2a7"}.fa-calendar-day{--fa:"\\f783"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\\f5c5"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\\f07d"}.fa-face-grimace,.fa-grimace{--fa:"\\f57f"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\\e2ce"}.fa-level-down-alt,.fa-turn-down{--fa:"\\f3be"}.fa-person-walking-arrow-right{--fa:"\\e552"}.fa-envelope-square,.fa-square-envelope{--fa:"\\f199"}.fa-dice{--fa:"\\f522"}.fa-bowling-ball{--fa:"\\f436"}.fa-brain{--fa:"\\f5dc"}.fa-band-aid,.fa-bandage{--fa:"\\f462"}.fa-calendar-minus{--fa:"\\f272"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\\f057"}.fa-gifts{--fa:"\\f79c"}.fa-hotel{--fa:"\\f594"}.fa-earth-asia,.fa-globe-asia{--fa:"\\f57e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\\f47f"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\\f00e"}.fa-thumbs-up{--fa:"\\f164"}.fa-user-clock{--fa:"\\f4fd"}.fa-allergies,.fa-hand-dots{--fa:"\\f461"}.fa-file-invoice{--fa:"\\f570"}.fa-window-minimize{--fa:"\\f2d1"}.fa-coffee,.fa-mug-saucer{--fa:"\\f0f4"}.fa-brush{--fa:"\\f55d"}.fa-file-half-dashed{--fa:"\\e698"}.fa-mask{--fa:"\\f6fa"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\\f010"}.fa-ruler-vertical{--fa:"\\f548"}.fa-user-alt,.fa-user-large{--fa:"\\f406"}.fa-train-tram{--fa:"\\e5b4"}.fa-user-nurse{--fa:"\\f82f"}.fa-syringe{--fa:"\\f48e"}.fa-cloud-sun{--fa:"\\f6c4"}.fa-stopwatch-20{--fa:"\\e06f"}.fa-square-full{--fa:"\\f45c"}.fa-magnet{--fa:"\\f076"}.fa-jar{--fa:"\\e516"}.fa-note-sticky,.fa-sticky-note{--fa:"\\f249"}.fa-bug-slash{--fa:"\\e490"}.fa-arrow-up-from-water-pump{--fa:"\\e4b6"}.fa-bone{--fa:"\\f5d7"}.fa-table-cells-row-unlock{--fa:"\\e691"}.fa-user-injured{--fa:"\\f728"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\\f5b4"}.fa-plane{--fa:"\\f072"}.fa-tent-arrows-down{--fa:"\\e581"}.fa-exclamation{--fa:"\\21"}.fa-arrows-spin{--fa:"\\e4bb"}.fa-print{--fa:"\\f02f"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\\e2bb"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"\\24"}.fa-x{--fa:"\\58"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\\f688"}.fa-users-cog,.fa-users-gear{--fa:"\\f509"}.fa-person-military-pointing{--fa:"\\e54a"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\\f19c"}.fa-umbrella{--fa:"\\f0e9"}.fa-trowel{--fa:"\\e589"}.fa-d{--fa:"\\44"}.fa-stapler{--fa:"\\e5af"}.fa-masks-theater,.fa-theater-masks{--fa:"\\f630"}.fa-kip-sign{--fa:"\\e1c4"}.fa-hand-point-left{--fa:"\\f0a5"}.fa-handshake-alt,.fa-handshake-simple{--fa:"\\f4c6"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\\f0fb"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\\f1e1"}.fa-barcode{--fa:"\\f02a"}.fa-plus-minus{--fa:"\\e43c"}.fa-video,.fa-video-camera{--fa:"\\f03d"}.fa-graduation-cap,.fa-mortar-board{--fa:"\\f19d"}.fa-hand-holding-medical{--fa:"\\e05c"}.fa-person-circle-check{--fa:"\\e53e"}.fa-level-up-alt,.fa-turn-up{--fa:"\\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:"\\f3d0"}.fa-hooli{--fa:"\\f427"}.fa-yelp{--fa:"\\f1e9"}.fa-cc-visa{--fa:"\\f1f0"}.fa-lastfm{--fa:"\\f202"}.fa-shopware{--fa:"\\f5b5"}.fa-creative-commons-nc{--fa:"\\f4e8"}.fa-aws{--fa:"\\f375"}.fa-redhat{--fa:"\\f7bc"}.fa-yoast{--fa:"\\f2b1"}.fa-cloudflare{--fa:"\\e07d"}.fa-ups{--fa:"\\f7e0"}.fa-pixiv{--fa:"\\e640"}.fa-wpexplorer{--fa:"\\f2de"}.fa-dyalog{--fa:"\\f399"}.fa-bity{--fa:"\\f37a"}.fa-stackpath{--fa:"\\f842"}.fa-buysellads{--fa:"\\f20d"}.fa-first-order{--fa:"\\f2b0"}.fa-modx{--fa:"\\f285"}.fa-guilded{--fa:"\\e07e"}.fa-vnv{--fa:"\\f40b"}.fa-js-square,.fa-square-js{--fa:"\\f3b9"}.fa-microsoft{--fa:"\\f3ca"}.fa-qq{--fa:"\\f1d6"}.fa-orcid{--fa:"\\f8d2"}.fa-java{--fa:"\\f4e4"}.fa-invision{--fa:"\\f7b0"}.fa-creative-commons-pd-alt{--fa:"\\f4ed"}.fa-centercode{--fa:"\\f380"}.fa-glide-g{--fa:"\\f2a6"}.fa-drupal{--fa:"\\f1a9"}.fa-jxl{--fa:"\\e67b"}.fa-dart-lang{--fa:"\\e693"}.fa-hire-a-helper{--fa:"\\f3b0"}.fa-creative-commons-by{--fa:"\\f4e7"}.fa-unity{--fa:"\\e049"}.fa-whmcs{--fa:"\\f40d"}.fa-rocketchat{--fa:"\\f3e8"}.fa-vk{--fa:"\\f189"}.fa-untappd{--fa:"\\f405"}.fa-mailchimp{--fa:"\\f59e"}.fa-css3-alt{--fa:"\\f38b"}.fa-reddit-square,.fa-square-reddit{--fa:"\\f1a2"}.fa-vimeo-v{--fa:"\\f27d"}.fa-contao{--fa:"\\f26d"}.fa-square-font-awesome{--fa:"\\e5ad"}.fa-deskpro{--fa:"\\f38f"}.fa-brave{--fa:"\\e63c"}.fa-sistrix{--fa:"\\f3ee"}.fa-instagram-square,.fa-square-instagram{--fa:"\\e055"}.fa-battle-net{--fa:"\\f835"}.fa-the-red-yeti{--fa:"\\f69d"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\\f3af"}.fa-edge{--fa:"\\f282"}.fa-threads{--fa:"\\e618"}.fa-napster{--fa:"\\f3d2"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\\f2ad"}.fa-google-plus-g{--fa:"\\f0d5"}.fa-artstation{--fa:"\\f77a"}.fa-markdown{--fa:"\\f60f"}.fa-sourcetree{--fa:"\\f7d3"}.fa-google-plus{--fa:"\\f2b3"}.fa-diaspora{--fa:"\\f791"}.fa-foursquare{--fa:"\\f180"}.fa-stack-overflow{--fa:"\\f16c"}.fa-github-alt{--fa:"\\f113"}.fa-phoenix-squadron{--fa:"\\f511"}.fa-pagelines{--fa:"\\f18c"}.fa-algolia{--fa:"\\f36c"}.fa-red-river{--fa:"\\f3e3"}.fa-creative-commons-sa{--fa:"\\f4ef"}.fa-safari{--fa:"\\f267"}.fa-google{--fa:"\\f1a0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\\f35c"}.fa-atlassian{--fa:"\\f77b"}.fa-linkedin-in{--fa:"\\f0e1"}.fa-digital-ocean{--fa:"\\f391"}.fa-nimblr{--fa:"\\f5a8"}.fa-chromecast{--fa:"\\f838"}.fa-evernote{--fa:"\\f839"}.fa-hacker-news{--fa:"\\f1d4"}.fa-creative-commons-sampling{--fa:"\\f4f0"}.fa-adversal{--fa:"\\f36a"}.fa-creative-commons{--fa:"\\f25e"}.fa-watchman-monitoring{--fa:"\\e087"}.fa-fonticons{--fa:"\\f280"}.fa-weixin{--fa:"\\f1d7"}.fa-shirtsinbulk{--fa:"\\f214"}.fa-codepen{--fa:"\\f1cb"}.fa-git-alt{--fa:"\\f841"}.fa-lyft{--fa:"\\f3c3"}.fa-rev{--fa:"\\f5b2"}.fa-windows{--fa:"\\f17a"}.fa-wizards-of-the-coast{--fa:"\\f730"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\\f2aa"}.fa-meetup{--fa:"\\f2e0"}.fa-centos{--fa:"\\f789"}.fa-adn{--fa:"\\f170"}.fa-cloudsmith{--fa:"\\f384"}.fa-opensuse{--fa:"\\e62b"}.fa-pied-piper-alt{--fa:"\\f1a8"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\\f397"}.fa-codiepie{--fa:"\\f284"}.fa-node{--fa:"\\f419"}.fa-mix{--fa:"\\f3cb"}.fa-steam{--fa:"\\f1b6"}.fa-cc-apple-pay{--fa:"\\f416"}.fa-scribd{--fa:"\\f28a"}.fa-debian{--fa:"\\e60b"}.fa-openid{--fa:"\\f19b"}.fa-instalod{--fa:"\\e081"}.fa-files-pinwheel{--fa:"\\e69f"}.fa-expeditedssl{--fa:"\\f23e"}.fa-sellcast{--fa:"\\f2da"}.fa-square-twitter,.fa-twitter-square{--fa:"\\f081"}.fa-r-project{--fa:"\\f4f7"}.fa-delicious{--fa:"\\f1a5"}.fa-freebsd{--fa:"\\f3a4"}.fa-vuejs{--fa:"\\f41f"}.fa-accusoft{--fa:"\\f369"}.fa-ioxhost{--fa:"\\f208"}.fa-fonticons-fi{--fa:"\\f3a2"}.fa-app-store{--fa:"\\f36f"}.fa-cc-mastercard{--fa:"\\f1f1"}.fa-itunes-note{--fa:"\\f3b5"}.fa-golang{--fa:"\\e40f"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\\f3bb"}.fa-grav{--fa:"\\f2d6"}.fa-weibo{--fa:"\\f18a"}.fa-uncharted{--fa:"\\e084"}.fa-firstdraft{--fa:"\\f3a1"}.fa-square-youtube,.fa-youtube-square{--fa:"\\f431"}.fa-wikipedia-w{--fa:"\\f266"}.fa-rendact,.fa-wpressr{--fa:"\\f3e4"}.fa-angellist{--fa:"\\f209"}.fa-galactic-republic{--fa:"\\f50c"}.fa-nfc-directional{--fa:"\\e530"}.fa-skype{--fa:"\\f17e"}.fa-joget{--fa:"\\f3b7"}.fa-fedora{--fa:"\\f798"}.fa-stripe-s{--fa:"\\f42a"}.fa-meta{--fa:"\\e49b"}.fa-laravel{--fa:"\\f3bd"}.fa-hotjar{--fa:"\\f3b1"}.fa-bluetooth-b{--fa:"\\f294"}.fa-square-letterboxd{--fa:"\\e62e"}.fa-sticker-mule{--fa:"\\f3f7"}.fa-creative-commons-zero{--fa:"\\f4f3"}.fa-hips{--fa:"\\f452"}.fa-css{--fa:"\\e6a2"}.fa-behance{--fa:"\\f1b4"}.fa-reddit{--fa:"\\f1a1"}.fa-discord{--fa:"\\f392"}.fa-chrome{--fa:"\\f268"}.fa-app-store-ios{--fa:"\\f370"}.fa-cc-discover{--fa:"\\f1f2"}.fa-wpbeginner{--fa:"\\f297"}.fa-confluence{--fa:"\\f78d"}.fa-shoelace{--fa:"\\e60c"}.fa-mdb{--fa:"\\f8ca"}.fa-dochub{--fa:"\\f394"}.fa-accessible-icon{--fa:"\\f368"}.fa-ebay{--fa:"\\f4f4"}.fa-amazon{--fa:"\\f270"}.fa-unsplash{--fa:"\\e07c"}.fa-yarn{--fa:"\\f7e3"}.fa-square-steam,.fa-steam-square{--fa:"\\f1b7"}.fa-500px{--fa:"\\f26e"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\\f194"}.fa-asymmetrik{--fa:"\\f372"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\\f2b4"}.fa-gratipay{--fa:"\\f184"}.fa-apple{--fa:"\\f179"}.fa-hive{--fa:"\\e07f"}.fa-gitkraken{--fa:"\\f3a6"}.fa-keybase{--fa:"\\f4f5"}.fa-apple-pay{--fa:"\\f415"}.fa-padlet{--fa:"\\e4a0"}.fa-amazon-pay{--fa:"\\f42c"}.fa-github-square,.fa-square-github{--fa:"\\f092"}.fa-stumbleupon{--fa:"\\f1a4"}.fa-fedex{--fa:"\\f797"}.fa-phoenix-framework{--fa:"\\f3dc"}.fa-shopify{--fa:"\\e057"}.fa-neos{--fa:"\\f612"}.fa-square-threads{--fa:"\\e619"}.fa-hackerrank{--fa:"\\f5f7"}.fa-researchgate{--fa:"\\f4f8"}.fa-swift{--fa:"\\f8e1"}.fa-angular{--fa:"\\f420"}.fa-speakap{--fa:"\\f3f3"}.fa-angrycreative{--fa:"\\f36e"}.fa-y-combinator{--fa:"\\f23b"}.fa-empire{--fa:"\\f1d1"}.fa-envira{--fa:"\\f299"}.fa-google-scholar{--fa:"\\e63b"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\\e5ae"}.fa-studiovinari{--fa:"\\f3f8"}.fa-pied-piper{--fa:"\\f2ae"}.fa-wordpress{--fa:"\\f19a"}.fa-product-hunt{--fa:"\\f288"}.fa-firefox{--fa:"\\f269"}.fa-linode{--fa:"\\f2b8"}.fa-goodreads{--fa:"\\f3a8"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\\f264"}.fa-jsfiddle{--fa:"\\f1cc"}.fa-sith{--fa:"\\f512"}.fa-themeisle{--fa:"\\f2b2"}.fa-page4{--fa:"\\f3d7"}.fa-hashnode{--fa:"\\e499"}.fa-react{--fa:"\\f41b"}.fa-cc-paypal{--fa:"\\f1f4"}.fa-squarespace{--fa:"\\f5be"}.fa-cc-stripe{--fa:"\\f1f5"}.fa-creative-commons-share{--fa:"\\f4f2"}.fa-bitcoin{--fa:"\\f379"}.fa-keycdn{--fa:"\\f3ba"}.fa-opera{--fa:"\\f26a"}.fa-itch-io{--fa:"\\f83a"}.fa-umbraco{--fa:"\\f8e8"}.fa-galactic-senate{--fa:"\\f50d"}.fa-ubuntu{--fa:"\\f7df"}.fa-draft2digital{--fa:"\\f396"}.fa-stripe{--fa:"\\f429"}.fa-houzz{--fa:"\\f27c"}.fa-gg{--fa:"\\f260"}.fa-dhl{--fa:"\\f790"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\\f0d3"}.fa-xing{--fa:"\\f168"}.fa-blackberry{--fa:"\\f37b"}.fa-creative-commons-pd{--fa:"\\f4ec"}.fa-playstation{--fa:"\\f3df"}.fa-quinscape{--fa:"\\f459"}.fa-less{--fa:"\\f41d"}.fa-blogger-b{--fa:"\\f37d"}.fa-opencart{--fa:"\\f23d"}.fa-vine{--fa:"\\f1ca"}.fa-signal-messenger{--fa:"\\e663"}.fa-paypal{--fa:"\\f1ed"}.fa-gitlab{--fa:"\\f296"}.fa-typo3{--fa:"\\f42b"}.fa-reddit-alien{--fa:"\\f281"}.fa-yahoo{--fa:"\\f19e"}.fa-dailymotion{--fa:"\\e052"}.fa-affiliatetheme{--fa:"\\f36b"}.fa-pied-piper-pp{--fa:"\\f1a7"}.fa-bootstrap{--fa:"\\f836"}.fa-odnoklassniki{--fa:"\\f263"}.fa-nfc-symbol{--fa:"\\e531"}.fa-mintbit{--fa:"\\e62f"}.fa-ethereum{--fa:"\\f42e"}.fa-speaker-deck{--fa:"\\f83c"}.fa-creative-commons-nc-eu{--fa:"\\f4e9"}.fa-patreon{--fa:"\\f3d9"}.fa-avianex{--fa:"\\f374"}.fa-ello{--fa:"\\f5f1"}.fa-gofore{--fa:"\\f3a7"}.fa-bimobject{--fa:"\\f378"}.fa-brave-reverse{--fa:"\\e63d"}.fa-facebook-f{--fa:"\\f39e"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\\f0d4"}.fa-web-awesome{--fa:"\\e682"}.fa-mandalorian{--fa:"\\f50f"}.fa-first-order-alt{--fa:"\\f50a"}.fa-osi{--fa:"\\f41a"}.fa-google-wallet{--fa:"\\f1ee"}.fa-d-and-d-beyond{--fa:"\\f6ca"}.fa-periscope{--fa:"\\f3da"}.fa-fulcrum{--fa:"\\f50b"}.fa-cloudscale{--fa:"\\f383"}.fa-forumbee{--fa:"\\f211"}.fa-mizuni{--fa:"\\f3cc"}.fa-schlix{--fa:"\\f3ea"}.fa-square-xing,.fa-xing-square{--fa:"\\f169"}.fa-bandcamp{--fa:"\\f2d5"}.fa-wpforms{--fa:"\\f298"}.fa-cloudversify{--fa:"\\f385"}.fa-usps{--fa:"\\f7e1"}.fa-megaport{--fa:"\\f5a3"}.fa-magento{--fa:"\\f3c4"}.fa-spotify{--fa:"\\f1bc"}.fa-optin-monster{--fa:"\\f23c"}.fa-fly{--fa:"\\f417"}.fa-square-bluesky{--fa:"\\e6a3"}.fa-aviato{--fa:"\\f421"}.fa-itunes{--fa:"\\f3b4"}.fa-cuttlefish{--fa:"\\f38c"}.fa-blogger{--fa:"\\f37c"}.fa-flickr{--fa:"\\f16e"}.fa-viber{--fa:"\\f409"}.fa-soundcloud{--fa:"\\f1be"}.fa-digg{--fa:"\\f1a6"}.fa-tencent-weibo{--fa:"\\f1d5"}.fa-letterboxd{--fa:"\\e62d"}.fa-symfony{--fa:"\\f83d"}.fa-maxcdn{--fa:"\\f136"}.fa-etsy{--fa:"\\f2d7"}.fa-facebook-messenger{--fa:"\\f39f"}.fa-audible{--fa:"\\f373"}.fa-think-peaks{--fa:"\\f731"}.fa-bilibili{--fa:"\\e3d9"}.fa-erlang{--fa:"\\f39d"}.fa-x-twitter{--fa:"\\e61b"}.fa-cotton-bureau{--fa:"\\f89e"}.fa-dashcube{--fa:"\\f210"}.fa-42-group,.fa-innosoft{--fa:"\\e080"}.fa-stack-exchange{--fa:"\\f18d"}.fa-elementor{--fa:"\\f430"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\\e01e"}.fa-creative-commons-nd{--fa:"\\f4eb"}.fa-palfed{--fa:"\\f3d8"}.fa-superpowers{--fa:"\\f2dd"}.fa-resolving{--fa:"\\f3e7"}.fa-xbox{--fa:"\\f412"}.fa-square-web-awesome-stroke{--fa:"\\e684"}.fa-searchengin{--fa:"\\f3eb"}.fa-tiktok{--fa:"\\e07b"}.fa-facebook-square,.fa-square-facebook{--fa:"\\f082"}.fa-renren{--fa:"\\f18b"}.fa-linux{--fa:"\\f17c"}.fa-glide{--fa:"\\f2a5"}.fa-linkedin{--fa:"\\f08c"}.fa-hubspot{--fa:"\\f3b2"}.fa-deploydog{--fa:"\\f38e"}.fa-twitch{--fa:"\\f1e8"}.fa-flutter{--fa:"\\e694"}.fa-ravelry{--fa:"\\f2d9"}.fa-mixer{--fa:"\\e056"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\\f203"}.fa-vimeo{--fa:"\\f40a"}.fa-mendeley{--fa:"\\f7b3"}.fa-uniregistry{--fa:"\\f404"}.fa-figma{--fa:"\\f799"}.fa-creative-commons-remix{--fa:"\\f4ee"}.fa-cc-amazon-pay{--fa:"\\f42d"}.fa-dropbox{--fa:"\\f16b"}.fa-instagram{--fa:"\\f16d"}.fa-cmplid{--fa:"\\e360"}.fa-upwork{--fa:"\\e641"}.fa-facebook{--fa:"\\f09a"}.fa-gripfire{--fa:"\\f3ac"}.fa-jedi-order{--fa:"\\f50e"}.fa-uikit{--fa:"\\f403"}.fa-fort-awesome-alt{--fa:"\\f3a3"}.fa-phabricator{--fa:"\\f3db"}.fa-ussunnah{--fa:"\\f407"}.fa-earlybirds{--fa:"\\f39a"}.fa-trade-federation{--fa:"\\f513"}.fa-autoprefixer{--fa:"\\f41c"}.fa-whatsapp{--fa:"\\f232"}.fa-square-upwork{--fa:"\\e67c"}.fa-slideshare{--fa:"\\f1e7"}.fa-google-play{--fa:"\\f3ab"}.fa-viadeo{--fa:"\\f2a9"}.fa-line{--fa:"\\f3c0"}.fa-google-drive{--fa:"\\f3aa"}.fa-servicestack{--fa:"\\f3ec"}.fa-simplybuilt{--fa:"\\f215"}.fa-bitbucket{--fa:"\\f171"}.fa-imdb{--fa:"\\f2d8"}.fa-deezer{--fa:"\\e077"}.fa-raspberry-pi{--fa:"\\f7bb"}.fa-jira{--fa:"\\f7b1"}.fa-docker{--fa:"\\f395"}.fa-screenpal{--fa:"\\e570"}.fa-bluetooth{--fa:"\\f293"}.fa-gitter{--fa:"\\f426"}.fa-d-and-d{--fa:"\\f38d"}.fa-microblog{--fa:"\\e01a"}.fa-cc-diners-club{--fa:"\\f24c"}.fa-gg-circle{--fa:"\\f261"}.fa-pied-piper-hat{--fa:"\\f4e5"}.fa-kickstarter-k{--fa:"\\f3bc"}.fa-yandex{--fa:"\\f413"}.fa-readme{--fa:"\\f4d5"}.fa-html5{--fa:"\\f13b"}.fa-sellsy{--fa:"\\f213"}.fa-square-web-awesome{--fa:"\\e683"}.fa-sass{--fa:"\\f41e"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\\e2d0"}.fa-buromobelexperte{--fa:"\\f37f"}.fa-salesforce{--fa:"\\f83b"}.fa-octopus-deploy{--fa:"\\e082"}.fa-medapps{--fa:"\\f3c6"}.fa-ns8{--fa:"\\f3d5"}.fa-pinterest-p{--fa:"\\f231"}.fa-apper{--fa:"\\f371"}.fa-fort-awesome{--fa:"\\f286"}.fa-waze{--fa:"\\f83f"}.fa-bluesky{--fa:"\\e671"}.fa-cc-jcb{--fa:"\\f24b"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\\f2ab"}.fa-fantasy-flight-games{--fa:"\\f6dc"}.fa-rust{--fa:"\\e07a"}.fa-wix{--fa:"\\f5cf"}.fa-behance-square,.fa-square-behance{--fa:"\\f1b5"}.fa-supple{--fa:"\\f3f9"}.fa-webflow{--fa:"\\e65c"}.fa-rebel{--fa:"\\f1d0"}.fa-css3{--fa:"\\f13c"}.fa-staylinked{--fa:"\\f3f5"}.fa-kaggle{--fa:"\\f5fa"}.fa-space-awesome{--fa:"\\e5ac"}.fa-deviantart{--fa:"\\f1bd"}.fa-cpanel{--fa:"\\f388"}.fa-goodreads-g{--fa:"\\f3a9"}.fa-git-square,.fa-square-git{--fa:"\\f1d2"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\\f174"}.fa-trello{--fa:"\\f181"}.fa-creative-commons-nc-jp{--fa:"\\f4ea"}.fa-get-pocket{--fa:"\\f265"}.fa-perbyte{--fa:"\\e083"}.fa-grunt{--fa:"\\f3ad"}.fa-weebly{--fa:"\\f5cc"}.fa-connectdevelop{--fa:"\\f20e"}.fa-leanpub{--fa:"\\f212"}.fa-black-tie{--fa:"\\f27e"}.fa-themeco{--fa:"\\f5c6"}.fa-python{--fa:"\\f3e2"}.fa-android{--fa:"\\f17b"}.fa-bots{--fa:"\\e340"}.fa-free-code-camp{--fa:"\\f2c5"}.fa-hornbill{--fa:"\\f592"}.fa-js{--fa:"\\f3b8"}.fa-ideal{--fa:"\\e013"}.fa-git{--fa:"\\f1d3"}.fa-dev{--fa:"\\f6cc"}.fa-sketch{--fa:"\\f7c6"}.fa-yandex-international{--fa:"\\f414"}.fa-cc-amex{--fa:"\\f1f3"}.fa-uber{--fa:"\\f402"}.fa-github{--fa:"\\f09b"}.fa-php{--fa:"\\f457"}.fa-alipay{--fa:"\\f642"}.fa-youtube{--fa:"\\f167"}.fa-skyatlas{--fa:"\\f216"}.fa-firefox-browser{--fa:"\\e007"}.fa-replyd{--fa:"\\f3e6"}.fa-suse{--fa:"\\f7d6"}.fa-jenkins{--fa:"\\f3b6"}.fa-twitter{--fa:"\\f099"}.fa-rockrms{--fa:"\\f3e9"}.fa-pinterest{--fa:"\\f0d2"}.fa-buffer{--fa:"\\f837"}.fa-npm{--fa:"\\f3d4"}.fa-yammer{--fa:"\\f840"}.fa-btc{--fa:"\\f15a"}.fa-dribbble{--fa:"\\f17d"}.fa-stumbleupon-circle{--fa:"\\f1a3"}.fa-internet-explorer{--fa:"\\f26b"}.fa-stubber{--fa:"\\e5c7"}.fa-telegram,.fa-telegram-plane{--fa:"\\f2c6"}.fa-old-republic{--fa:"\\f510"}.fa-odysee{--fa:"\\e5c6"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\\f40c"}.fa-node-js{--fa:"\\f3d3"}.fa-edge-legacy{--fa:"\\e078"}.fa-slack,.fa-slack-hash{--fa:"\\f198"}.fa-medrt{--fa:"\\f3c8"}.fa-usb{--fa:"\\f287"}.fa-tumblr{--fa:"\\f173"}.fa-vaadin{--fa:"\\f408"}.fa-quora{--fa:"\\f2c4"}.fa-square-x-twitter{--fa:"\\e61a"}.fa-reacteurope{--fa:"\\f75d"}.fa-medium,.fa-medium-m{--fa:"\\f23a"}.fa-amilia{--fa:"\\f36d"}.fa-mixcloud{--fa:"\\f289"}.fa-flipboard{--fa:"\\f44d"}.fa-viacoin{--fa:"\\f237"}.fa-critical-role{--fa:"\\f6c9"}.fa-sitrox{--fa:"\\e44a"}.fa-discourse{--fa:"\\f393"}.fa-joomla{--fa:"\\f1aa"}.fa-mastodon{--fa:"\\f4f6"}.fa-airbnb{--fa:"\\f834"}.fa-wolf-pack-battalion{--fa:"\\f514"}.fa-buy-n-large{--fa:"\\f8a6"}.fa-gulp{--fa:"\\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\\f4f1"}.fa-strava{--fa:"\\f428"}.fa-ember{--fa:"\\f423"}.fa-canadian-maple-leaf{--fa:"\\f785"}.fa-teamspeak{--fa:"\\f4f9"}.fa-pushed{--fa:"\\f3e1"}.fa-wordpress-simple{--fa:"\\f411"}.fa-nutritionix{--fa:"\\f3d6"}.fa-wodu{--fa:"\\e088"}.fa-google-pay{--fa:"\\e079"}.fa-intercom{--fa:"\\f7af"}.fa-zhihu{--fa:"\\f63f"}.fa-korvue{--fa:"\\f42f"}.fa-pix{--fa:"\\e43a"}.fa-steam-symbol{--fa:"\\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}.button{display:flex;height:50px;padding:0;background:#3e7671;border:none;outline:none;border-radius:5px;overflow:hidden;font-size:16px;font-weight:500;cursor:pointer;min-width:220px;max-width:220px}.button:hover{background:#008168}.button:active{background:#3e7671}.button-text{display:block;margin:auto;padding:0 10px;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:50%;text-transform:capitalize}.button-icon{margin:auto;padding:10px;font-size:20px;color:#ffffff}.button-profile{margin:auto}.button-profile svg{display:flex;margin-left:4px;background-color:#fff;border-radius:4px}.profile-image{display:flex;margin-left:4px;width:40px;height:40px;border-radius:4px;background-color:#fff}.button-text-full-width{width:auto!important}.button-link{text-decoration:none!important}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:180px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;border-radius:5px;text-align:left!important}.dropdown-content-link a{color:#71797E;padding:16px 20px;text-decoration:none;display:block;cursor:pointer;font-size:1rem!important}.dropdown-content-link a:hover{background-color:#f1f1f1;color:#000;opacity:0.7}.dropdown:hover .dropdown-content{display:block}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4);text-align:center}.modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:40%}.modal-body{max-height:50vh;overflow-y:auto}.close{color:#aaaaaa;float:right;font-size:28px;font-weight:bold}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-app{background-color:#c3e9bc;padding:15px;margin:10px;border-radius:5px}.external-app-link{text-decoration:none;color:#000}.gray-text{color:#606060}.green-text{color:#3e7671}#countdown{position:relative;margin:auto;margin-top:30px;height:40px;width:40px;text-align:center}#countdown-number{color:#2e2e2e;display:inline-block;line-height:40px}#countdown svg{position:absolute;top:0;right:0;width:40px;height:40px;transform:rotateY(-180deg) rotateZ(-90deg)}#countdown svg circle{stroke-dasharray:113px;stroke-dashoffset:0px;stroke-linecap:round;stroke-width:4px;stroke:#008168;fill:none;animation:countdown 6s linear infinite forwards}@keyframes countdown{from{stroke-dashoffset:0px}to{stroke-dashoffset:113px}}.lds-ring{color:#fff}.lds-ring{display:flex;justify-content:center;align-items:center;margin:auto;position:relative}.lds-ring div{box-sizing:border-box;display:block;position:absolute;width:25px;height:25px;margin:3px;border:2px solid currentColor;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;border-color:currentColor transparent transparent transparent}.lds-ring div:nth-child(1){animation-delay:-0.45s}.lds-ring div:nth-child(2){animation-delay:-0.3s}.lds-ring div:nth-child(3){animation-delay:-0.15s}@keyframes lds-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.dropdown-content .dropdown-user-profile{padding:12px 10px 8px 18px;border-bottom:1px solid #aaaaaa}.dropdown-content .dropdown-user-profile .username{font-size:16px;color:#2e2e2e;text-transform:capitalize}.dropdown-content .dropdown-user-profile .first-last-name{font-size:13px;color:#606060}.menu-bar-icons{color:#008168;display:inline-block;margin-right:8px;font-size:18px}.other-links-list{padding:14px;background-color:#f1f1f1;margin-bottom:8px;text-align:start;border-radius:5px}.tab-list{margin:0px 40px;padding:0;list-style:none;display:flex;position:relative;width:85%;border-bottom:1px solid #aaa}.tab-item{flex:1;text-align:center;transition:.3s;opacity:0.5}.tab-toggle{display:none}.tab-content{display:none}.tab-toggle:nth-child(1):checked~.tab-list .tab-item:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-list .tab-item:nth-child(2){opacity:1;color:#008168;border-bottom:2px solid #008168}.tab-toggle:nth-child(2):checked~.tab-list::before{transform:translateX(100%)}.tab-toggle:nth-child(3):checked~.tab-list::before{transform:translateX(200%)}.tab-toggle:nth-child(1):checked~.tab-container .tab-content:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-container .tab-content:nth-child(2){display:block}.tab-trigger{display:block;padding:10px 0}.tab-container{padding:15px 30px}.grid-view-menu{display:grid;gap:4px;grid-template-columns:repeat(3, 1fr);align-content:start;padding:8px;max-height:230px;overflow-y:auto}.grid-view-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:75px;height:70px;padding:6px;text-decoration:none;font-size:13px;color:#128f8b;text-align:center;transition:transform 0.2s ease, background-color 0.1s ease;position:relative;z-index:1;border-radius:3px;cursor:pointer}.grid-view-link:hover{background-color:#eeeeee;transform:scale(1.1);z-index:5}.grid-view-link-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#71797e;width:100%}.grid-view-link:hover .grid-view-link-text{white-space:pre-wrap;overflow:visible;text-overflow:unset}.grid-view-link i{transition:transform 0.2s ease}.grid-view-link:hover i{transform:scale(1.1)}hr.solid{border-top:1px solid #bbb;margin:2px 0}.restricted-overlay{position:fixed;inset:0;background:linear-gradient(135deg, #0f3d3e, #128f8b);display:flex;justify-content:center;align-items:center;padding:20px;z-index:9999999;font-family:"Segoe UI", sans-serif}.restricted-card{background:#ffffff;border-radius:10px;padding:50px;max-width:540px;width:100%;text-align:center;box-shadow:0 25px 70px rgba(0, 0, 0, 0.25);animation:fadeInUp 0.3s ease}.restricted-icon{font-size:48px;color:#128f8b;margin-bottom:30px}.restricted-card h2{margin-bottom:10px;color:#128f8b}.restricted-message{color:#555;font-size:16px;margin-bottom:30px;line-height:1.5}.restricted-links h4{margin-bottom:20px;color:#128f8b}.link-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));gap:20px;margin-bottom:25px}.restricted-link{background:#ecf2f2;padding:10px;border-radius:10px;text-decoration:none;color:#128f8b;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all 0.2s ease}.restricted-link:hover{background:#128f8b;color:#fff}.restricted-actions{display:flex;justify-content:center;gap:15px}.btn-primary{background:#128f8b;color:#fff;padding:10px 20px;border-radius:8px;text-decoration:none;font-weight:500;transition:0.2s}.btn-primary:hover{background:#0f6e6b}.btn-secondary{background:transparent;border:2px solid #128f8b;color:#128f8b;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-danger{background:transparent;border:2px solid #dc3545;color:#dc3545;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-secondary:hover{background:#128f8b;color:#fff}@keyframes fadeInUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}`;
4014
4060
 
4015
4061
  const DashButtonComponent = class {
4016
4062
  constructor(hostRef) {
4017
4063
  registerInstance(this, hostRef);
4018
4064
  this.showPostLoginText = false;
4019
4065
  this.silentCheckSso = false;
4020
- this.redirectUri = undefined;
4021
4066
  this.authMethod = "check-sso";
4022
4067
  this.portalApiUrl = "";
4023
4068
  this.plmUrl = "https://productlicensemanager-zdzw.cloud.zdzw-project.com";
4024
4069
  this.showUnauthorizedModal = false;
4025
4070
  this.primaryColor = "";
4026
4071
  this.accentColor = "";
4072
+ this.notificationPosition = "left";
4027
4073
  this.keycloak = null;
4028
4074
  this.isAuth = false;
4029
4075
  this.givenUserName = "";
4030
4076
  this.silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
4031
4077
  this.appList = [];
4032
- this.avatarSvg = jdenticonModule.toSvg("init-avatar", 40);
4078
+ this.avatarSvg = jdenticonModuleExports.toSvg("init-avatar", 40);
4033
4079
  this.isLoading = false;
4034
- this.config = undefined;
4035
- this.localMenuLinks = undefined;
4036
- this.organizationUrl = undefined;
4037
4080
  this.isRestricted = false;
4038
4081
  }
4082
+ componentDidLoad() {
4083
+ console.log("New version!!!");
4084
+ // Add a click listener to this specific component instance
4085
+ this.el.addEventListener('click', (event) => {
4086
+ const path = event.composedPath();
4087
+ // Ensure this click originated from inside the notification module
4088
+ const isInsideNotification = path.some((target) => target && target.tagName === 'NOTIFICATION-COMPONENT');
4089
+ // If the click is outside the notification module (e.g., somewhere else in dash-button), exit early
4090
+ if (!isInsideNotification) {
4091
+ return;
4092
+ }
4093
+ // 2. Identify the specific link element inside the path array
4094
+ const clickedLink = path.find((target) => target && (target.tagName === 'A' || (typeof target.hasAttribute === 'function' && target.hasAttribute('href'))));
4095
+ if (clickedLink) {
4096
+ const destinationUrl = clickedLink.getAttribute('href');
4097
+ if (destinationUrl) {
4098
+ // Prevent the default behavior ONLY for the notification component links
4099
+ event.preventDefault();
4100
+ event.stopPropagation();
4101
+ // Check if the link contains the unique class name
4102
+ const isHomeIconLink = clickedLink.classList.contains('button-link');
4103
+ if (isHomeIconLink) {
4104
+ console.log('Notification module home link intercepted. Opening in new tab:', destinationUrl);
4105
+ window.open(destinationUrl, '_blank', 'noopener,noreferrer');
4106
+ }
4107
+ else {
4108
+ console.log('Notification module standard link intercepted. Navigating in current view:', destinationUrl);
4109
+ window.location.href = destinationUrl;
4110
+ }
4111
+ }
4112
+ }
4113
+ });
4114
+ }
4039
4115
  async componentWillLoad() {
4040
4116
  var _a, _b, _c, _d;
4041
4117
  // Fetch config from API
@@ -4078,16 +4154,17 @@ const DashButtonComponent = class {
4078
4154
  onLoad: this.authMethod,
4079
4155
  checkLoginIframe: false,
4080
4156
  silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',
4081
- }).then(res => {
4157
+ }).then((res) => {
4158
+ var _a, _b, _c;
4082
4159
  if (res) {
4083
4160
  this.isAuth = true;
4084
4161
  localStorage.setItem("keycloak", JSON.stringify(this.keycloak));
4085
4162
  // document.cookie = "DASH_BTN=" + JSON.parse(localStorage.getItem('keycloak')).token;
4086
- document.cookie = this.config.cookieName + "=" + JSON.parse(localStorage.getItem('keycloak')).token;
4163
+ document.cookie = this.config.cookieName + "=" + JSON.parse((_a = localStorage.getItem('keycloak')) !== null && _a !== void 0 ? _a : '{}').token;
4087
4164
  // Set userName
4088
- this.givenUserName = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.preferred_username;
4165
+ this.givenUserName = JSON.parse((_b = localStorage.getItem('keycloak')) !== null && _b !== void 0 ? _b : '{}').idTokenParsed.preferred_username;
4089
4166
  // Set user avatar
4090
- this.avatarSvg = jdenticonModule.toSvg(JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.sub, 40);
4167
+ this.avatarSvg = jdenticonModuleExports.toSvg(JSON.parse((_c = localStorage.getItem('keycloak')) !== null && _c !== void 0 ? _c : '{}').idTokenParsed.sub, 40);
4091
4168
  }
4092
4169
  });
4093
4170
  }
@@ -4118,27 +4195,44 @@ const DashButtonComponent = class {
4118
4195
  }
4119
4196
  }
4120
4197
  }
4198
+ // First, check global links
4199
+ // Then, check the token's organization URL
4200
+ // Finally, check against dashbutton configuration: allowedGlobalDomain and whitelistedUrls
4121
4201
  validateAppAccessByUrl() {
4122
- var _a, _b, _c, _d;
4123
- const currentUrl = window.location.href;
4124
- const currentOrigin = window.location.origin;
4202
+ var _a, _b, _c, _d, _e, _f;
4203
+ const normalizeUrl = (url) => url.replace(/\/+$/, '');
4204
+ const currentUrl = normalizeUrl(window.location.href);
4205
+ const currentOrigin = normalizeUrl(window.location.origin);
4125
4206
  const globalLinks = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.global) === null || _c === void 0 ? void 0 : _c.links) || [];
4126
- // Check Global Links
4207
+ const allowedGlobalDomain = ((_d = this.config) === null || _d === void 0 ? void 0 : _d.allowedGlobalDomain) || '';
4208
+ const whitelistedUrls = ((_e = this.config) === null || _e === void 0 ? void 0 : _e.whitelistedUrls) || '';
4209
+ // First, check global links
4127
4210
  const matchGlobal = globalLinks.some(link => {
4128
4211
  try {
4129
- const linkOrigin = new URL(link.url).origin;
4212
+ const linkOrigin = normalizeUrl(new URL(link.url).origin);
4130
4213
  return currentOrigin === linkOrigin;
4131
4214
  }
4132
4215
  catch (_a) {
4133
4216
  return false;
4134
4217
  }
4135
4218
  });
4136
- // Check Token organizationUrl
4137
- const tokenParsed = (_d = this.keycloak) === null || _d === void 0 ? void 0 : _d.tokenParsed;
4219
+ // Then check the token organization URL
4220
+ const tokenParsed = (_f = this.keycloak) === null || _f === void 0 ? void 0 : _f.tokenParsed;
4138
4221
  const allowedOrg = tokenParsed === null || tokenParsed === void 0 ? void 0 : tokenParsed.organizationUrl;
4139
- const matchOrganization = allowedOrg && currentUrl.includes(allowedOrg);
4140
- // global and org url validations
4141
- const isAllowed = matchGlobal || matchOrganization;
4222
+ const matchOrganization = allowedOrg && currentUrl.includes(normalizeUrl(allowedOrg));
4223
+ // Check allowedGlobalDomain (single domain)
4224
+ const matchAllowedDomain = allowedGlobalDomain &&
4225
+ currentOrigin.includes(normalizeUrl(allowedGlobalDomain));
4226
+ // Check whitelistedUrls (comma-separated string)
4227
+ const whitelistedArray = whitelistedUrls
4228
+ ? whitelistedUrls.split(',').map(url => normalizeUrl(url.trim()))
4229
+ : [];
4230
+ const matchWhitelisted = whitelistedArray.some(url => currentUrl.includes(url));
4231
+ // Final validation
4232
+ const isAllowed = matchGlobal ||
4233
+ matchOrganization ||
4234
+ matchAllowedDomain ||
4235
+ matchWhitelisted;
4142
4236
  this.isRestricted = !isAllowed;
4143
4237
  }
4144
4238
  login() {
@@ -4158,10 +4252,20 @@ const DashButtonComponent = class {
4158
4252
  const appModal = this.el.shadowRoot.querySelector('#appListModal');
4159
4253
  appModal.style.display = "none";
4160
4254
  }
4255
+ renderNotificationComponent() {
4256
+ var _a;
4257
+ const token = (_a = this.keycloak) === null || _a === void 0 ? void 0 : _a.idTokenParsed;
4258
+ const owner = (token === null || token === void 0 ? void 0 : token.preferred_username) || (token === null || token === void 0 ? void 0 : token.sub) || '';
4259
+ const orgUrlRaw = (token === null || token === void 0 ? void 0 : token.organizationUrl) || '';
4260
+ const orgHost = orgUrlRaw
4261
+ ? new URL(orgUrlRaw.startsWith('http') ? orgUrlRaw : `https://${orgUrlRaw}`).hostname
4262
+ : '';
4263
+ return orgHost && owner ? (h("notification-component", { owner: owner, "max-records": 10, "display-type": "icon", "notification-url": `https://notifications.${orgHost}/notifications-api`, "socket-connect": true, "socket-url": `wss://repository.${orgHost}/socket`, "list-url": `https://notifications.${orgHost}/notifications` })) : null;
4264
+ }
4161
4265
  render() {
4162
4266
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
4163
- return h("div", { key: 'd186318626a3fbd1d011d3532559901d1c36859e' }, h("div", { key: 'a5887ec423aabb35ca7988169cfa7a9f0bd588e6' }, (() => {
4164
- var _a, _b, _c, _d, _e, _f;
4267
+ return h("div", { key: 'a2d1650d96fcbbfa5128da4315e70dc0c2682dfd' }, h("div", { key: '975ab012c618442f627f00a9ee29773c08d55824' }, (() => {
4268
+ var _a, _b, _c, _d, _e, _f, _g, _h;
4165
4269
  // GLOBAL LOADING SPINNER
4166
4270
  if (this.isLoading) {
4167
4271
  return (h("a", { id: "login-btn", class: "button button-link" }, h("div", { class: "lds-ring" }, h("div", null), h("div", null), h("div", null), h("div", null))));
@@ -4173,21 +4277,23 @@ const DashButtonComponent = class {
4173
4277
  return (h("a", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, href: this.redirectUri, id: "login-btn", class: "button button-link" }, h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, class: "button-text button-text-full-width" }, "Go to Dashboard")));
4174
4278
  }
4175
4279
  else if (this.isAuth) {
4176
- return (h("div", { id: "profile-btn", class: "dropdown" }, h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, type: "button", class: "button" }, h("span", { class: "button-profile" }, JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.imageUrl ?
4280
+ return (h("div", { class: "profile-actions", style: { display: "inline-flex", alignItems: "center", gap: "15px" } }, this.notificationPosition !== "right" && this.renderNotificationComponent(), h("div", { id: "profile-btn", class: "dropdown" }, h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, type: "button", class: "button" }, h("span", { class: "button-profile" }, JSON.parse((_g = localStorage.getItem('keycloak')) !== null && _g !== void 0 ? _g : '{}').idTokenParsed.imageUrl ?
4177
4281
  h("img", { class: "profile-image", src: "https://s-damith.github.io/test-avatar/images/e24da9c5-0b1f-46fa-82cd-7c711c77b5c7.png" })
4178
4282
  :
4179
- h("div", { innerHTML: this.avatarSvg })), h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, id: "given-name", class: "button-text" }, this.givenUserName), h("div", { class: "button-icon" }, (this.config.menuViewType == "grid") ? h("i", { class: "fa-solid fa-grip-vertical" }) : h("i", { class: "fa-solid fa-bars" }))), h("div", { class: "dropdown-content" }, h("div", { class: "dropdown-user-profile" }, h("div", { class: "username" }, "@", this.givenUserName), h("div", { class: "first-last-name" }, JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.name)), (this.config.menuViewType == "grid") ? (h("div", null, h("div", { class: "grid-view-menu" }, this.config.menu.global.links.map(item => {
4283
+ h("div", { innerHTML: this.avatarSvg })), h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, id: "given-name", class: "button-text" }, this.givenUserName), h("div", { class: "button-icon" }, (this.config.menuViewType == "grid") ? h("i", { class: "fa-solid fa-grip-vertical" }) : h("i", { class: "fa-solid fa-bars" }))), h("div", { class: "dropdown-content" }, h("div", { class: "dropdown-user-profile" }, h("div", { class: "username" }, "@", this.givenUserName), h("div", { class: "first-last-name" }, JSON.parse((_h = localStorage.getItem('keycloak')) !== null && _h !== void 0 ? _h : '{}').idTokenParsed.name)), (this.config.menuViewType == "grid") ? (h("div", null, h("div", { class: "grid-view-menu" }, this.config.menu.global.links.map(item => {
4180
4284
  return (h("a", { href: item.url, target: '_blank', class: "grid-view-link" }, h("i", { class: item.icon + " fa-2x" }), h("div", { class: "grid-view-link-text" }, item.name)));
4181
- })), this.config.menu.global.links.length != 0 && h("hr", { class: "solid" }), h("div", { class: "grid-view-menu", style: this.config.menu.global.links.length == 0 && { "margin-bottom": "12px" } }, h("a", { onClick: this.showModal.bind(this), class: "grid-view-link" }, h("i", { class: "fa-regular fa-window-restore fa-2x" }), h("div", { class: "grid-view-link-text" }, "Modules")), h("a", { href: this.config.defaultLink.url, target: '_blank', class: "grid-view-link" }, h("i", { class: "fa-solid fa-globe fa-2x" }), h("div", { class: "grid-view-link-text" }, this.config.defaultLink.name)), h("a", { onClick: this.logout.bind(this), class: "grid-view-link" }, h("i", { class: "fa-solid fa-right-from-bracket fa-2x" }), h("div", { class: "grid-view-link-text" }, "Logout"))))) : (
4285
+ })), this.config.menu.global.links.length != 0 && h("hr", { class: "solid" }), h("div", { class: "grid-view-menu", style: this.config.menu.global.links.length === 0
4286
+ ? { marginBottom: '12px' }
4287
+ : undefined }, h("a", { onClick: this.showModal.bind(this), class: "grid-view-link" }, h("i", { class: "fa-regular fa-window-restore fa-2x" }), h("div", { class: "grid-view-link-text" }, "Modules")), h("a", { href: this.config.defaultLink.url, target: '_blank', class: "grid-view-link" }, h("i", { class: "fa-solid fa-globe fa-2x" }), h("div", { class: "grid-view-link-text" }, this.config.defaultLink.name)), h("a", { onClick: this.logout.bind(this), class: "grid-view-link" }, h("i", { class: "fa-solid fa-right-from-bracket fa-2x" }), h("div", { class: "grid-view-link-text" }, "Logout"))))) : (
4182
4288
  // List View
4183
4289
  h("div", { class: "dropdown-content-link" }, this.config.menu.global.links.map(item => {
4184
4290
  return (h("a", { href: item.url, target: '_blank', id: "applications-btn" }, h("i", { class: item.icon + " menu-bar-icons" }), item.name));
4185
- }), h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, h("i", { class: "fa-regular fa-window-restore menu-bar-icons" }), "Modules"), h("a", { href: this.config.defaultLink.url, target: '_blank', id: "applications-btn" }, h("i", { class: "fa-solid fa-globe menu-bar-icons" }), this.config.defaultLink.name), h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, h("i", { class: "fa-solid fa-right-from-bracket menu-bar-icons" }), "Logout"))))));
4291
+ }), h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, h("i", { class: "fa-regular fa-window-restore menu-bar-icons" }), "Modules"), h("a", { href: this.config.defaultLink.url, target: '_blank', id: "applications-btn" }, h("i", { class: "fa-solid fa-globe menu-bar-icons" }), this.config.defaultLink.name), h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, h("i", { class: "fa-solid fa-right-from-bracket menu-bar-icons" }), "Logout"))))), this.notificationPosition === "right" && this.renderNotificationComponent()));
4186
4292
  }
4187
4293
  else {
4188
4294
  return (h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, onClick: this.login.bind(this), id: "login-btn", type: "button", class: "button" }, h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, class: "button-text" }, "Login")));
4189
4295
  }
4190
- })()), h("div", { key: '1ad6675f4e190df28410c54f7ad9f097578e0403', id: "appListModal", class: "modal" }, h("div", { key: '655f51c1d18372eca86610750d1ac3c8e1eeeefa', class: "modal-content" }, h("span", { key: 'bb850ddc02afdbbc04b5fbc6258d6ab2b1e92bfb', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), h("div", { key: '4fdec67f888e554e1c8a3328ae2b55fb1a0fea4d', class: "box" }, h("input", { type: "radio", class: "tab-toggle", name: "tab-toggle", id: "tab1", checked: true }), h("ul", { key: '4317ec4e90f682b549aea49971d12426aaa5c0ef', class: "tab-list" }, h("li", { class: "tab-item" }, h("label", { class: "tab-trigger", htmlFor: "tab1" }, h("i", { class: "fa-solid fa-table-list menu-bar-icons" }), " ", this.config.menu.local.name))), h("div", { key: '8f1b8e0ec034d45a9c04776b90afcbd3cd9fea3e', class: "tab-container" }, h("div", { key: 'e59e81838b0c2fa419314503ab0c2d56143496cb', class: "tab-content" }, h("div", { key: 'f393c5497bfeddae25469d2d4475f9aacdf13629', class: "modal-body" }, !((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.local) === null || _c === void 0 ? void 0 : _c.enableCustomLocalMenu) ? (
4296
+ })()), h("div", { key: '3a9e8bd2730ba8d71f1e8416bab4d745a68dda9a', id: "appListModal", class: "modal" }, h("div", { key: '8f85ebe690af26900e003755e68fa5cd1401b502', class: "modal-content" }, h("span", { key: '445d67c3803859bbec76177291fd71389ccf5917', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), h("div", { key: '0a0df9bb6fc5258568fb9363353f58486a30f744', class: "box" }, h("input", { key: 'eec587753688b1ac0bd1a3b87975f0b9692d7719', type: "radio", class: "tab-toggle", name: "tab-toggle", id: "tab1", checked: true }), h("ul", { key: '4db9fff924d2f38e3e42b83bd96fe2589dc2c701', class: "tab-list" }, h("li", { key: '99e9a21d90012e521aa10d21194f44013dbd5931', class: "tab-item" }, h("label", { key: 'c4fadd0b70b3e944860056a37e9d5f52b7c625b5', class: "tab-trigger", htmlFor: "tab1" }, h("i", { key: '5252821523386c869725b0e13bf662ec03f24d81', class: "fa-solid fa-table-list menu-bar-icons" }), " ", this.config.menu.local.name))), h("div", { key: '2da9e2383580f6d5130883051c4b0d1cba1354a7', class: "tab-container" }, h("div", { key: 'a51f2e9b923836b63b9ff2453d08dc3ee93213e6', class: "tab-content" }, h("div", { key: '9c7146fa59070eace7bcb1b76fb2b59468e23b5c', class: "modal-body" }, !((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.local) === null || _c === void 0 ? void 0 : _c.enableCustomLocalMenu) ? (
4191
4297
  // <div>{this.localMenuLinks}</div>
4192
4298
  (_d = this.localMenuLinks) === null || _d === void 0 ? void 0 : _d.map((app, index) => {
4193
4299
  const isDisabled = !app.url;
@@ -4195,14 +4301,12 @@ const DashButtonComponent = class {
4195
4301
  })) : ((_e = this.config.menu.local.links) === null || _e === void 0 ? void 0 : _e.map((app, index) => (h("a", { key: index, class: "external-app-link", target: "_blank", rel: "noopener noreferrer", href: app.url }, h("div", { class: "modal-app" }, h("div", null, app.name)))))), !this.organizationUrl ? (h("div", null, h("h3", { class: "gray-text" }, "Organization Domain URL not set"), h("p", { class: "gray-text" }, "Please set your Organization Domain URL on the Portal profile page."))) : (((!((_h = (_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.menu) === null || _g === void 0 ? void 0 : _g.local) === null || _h === void 0 ? void 0 : _h.enableCustomLocalMenu) &&
4196
4302
  ((_k = (_j = this.localMenuLinks) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : 0) === 0) ||
4197
4303
  (((_o = (_m = (_l = this.config) === null || _l === void 0 ? void 0 : _l.menu) === null || _m === void 0 ? void 0 : _m.local) === null || _o === void 0 ? void 0 : _o.enableCustomLocalMenu) &&
4198
- ((_t = (_s = (_r = (_q = (_p = this.config) === null || _p === void 0 ? void 0 : _p.menu) === null || _q === void 0 ? void 0 : _q.local) === null || _r === void 0 ? void 0 : _r.links) === null || _s === void 0 ? void 0 : _s.length) !== null && _t !== void 0 ? _t : 0) === 0)) && (h("div", null, h("h3", { class: "gray-text" }, "No installed ", ((_w = (_v = (_u = this.config) === null || _u === void 0 ? void 0 : _u.menu) === null || _v === void 0 ? void 0 : _v.local) === null || _w === void 0 ? void 0 : _w.name) || "menu", " found."), h("p", { class: "gray-text" }, "Please contact administration.")))))))))), h("div", { key: 'c47c1a2e57cbd3d42fcb19d559343a7104e092c0', id: "appPermissionErrorModal", class: "modal" }, h("div", { key: 'cd8a0b1837afc3089bda1bd4d9e7ec0c2a7c3f45', class: "modal-content" }, h("img", { key: 'e21aa2b61cbedff394e4cbbc6993fd06b3c3906e', src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGD0lEQVR4nO2cbU8TWRTH/W5WEAmF4nNiieFFoeBjYhQUWzUWYkpbDfGFCR9CoolvQF9aWgG3kMCG8LACC1ikuCuUh7bH/M/MmW131S2ZqTDjPcmkdub2tvPj3HP/55yJR44oU6ZMmTJlyg7YOsL9pI7+shkogGFzDqMAhhVAOsiQozwwrACS8sCwfXd+tYTDCiApDwwf/FJUSzisAJKjNhFlPzYF0KQpgCZNATRpCqBJUwBNmgJo0hRAk6YAmjQF0KkAs4uLtPz8OU2HQpRqaaFkQwPFq6v5SHo8fA7XVgYGKLu0dGC/81ABLORylB4cpInLl+nt0aP7OiauXKH00BAV8vlfE2AmkaCxpiYDSKK6mqaammjx+nX6FAzS348e0VYkwgf+jXO4Nun18lj53PuLF2kjmfx1AOa3t2mmt9cAkDxxghauXaPN3l7KxmJlHRgLmKNutzHPTCTCczsa4G4mQ6nWVr7h4WPHaL6trQTc+r17NOf30/iZMzTmdtNwVRWPA2Scm/H56FMgQNlolMfDO/9ob+cxmDPl99PuxoYzAe5mMrzcxOvWAALgolFauXmTxurry45/gPvnjRsG+LW7d3lOWdKVhHggAPPb24bnvW9ooL96evjGP4dC9NvJkwaY0fPnaa6vjzLJJG19+ED5bJY/u5NOUyYep/lnz2jk3Ll/4p/Hw/B4ru5unls8Mb+z4xyAM3rMg5cIvHRXFyVqavg8oKy+elXWjooxqy9f0luXy5gTm4xAFE+cjcWcATCTSGgxr6rKWLaAF9fj1u+BAOW2tsqeL7+7S5OdnRq8mhpaf/CA5xSI8EiJiRsjI/YGWMjlDKmCDUOWrXje3NOnRIWCaXh45biqL+f59nYjHlqtE38qwPTgoLHMeLeNRo2YB8+zEp7ExK1olI+Rujo+t/b6tX0BTugZBnQebha7rcQ8K5Ytw9O9WWKi7M7QiZKx2BJgdnHRyDDE+0SqYMOwEt7k7dvaxqJLHHwXvpMzFpeLtpeX7QdwZWCAbwjpmYhkkSrlxqVy4WEc4q1IHBbbsRhNXrjA71devLAfwOlQiH88lhJuBhkGbxx9fZbDE4NO5LTO5+OxCB14P93dbT+AKZ9P84ZgkG8GqRjeQ9ZUAh4MYhvXxs+e5fHwRBbWra32A5j0ePjHf9H1mST+2YWFisCDba+u8vV3tbWGNuT3jY32AxjXS06QFLgZKUH9aPct7O3RVFfXf+BlHj6kZG2tBq+j47tpGs5LoYKrNpGI9v74cfsDHNazg+/dvFl4sNzmprHz2x5g8l9LWMTuzsePli7bYkMBgqVMfb39l3CqpeXbm0g8XhF439xEgkGjOmN7GTOjA4XU2Be8zs6y4MFmnzzRpJLfXypjenrsK6Qnvd4SSQGxCyFtNbxiIb1+/74mpL1e+wrp7NISp1ElqZwuZZB2WQkPZqRyevz7Eg5zCc22qVxxMUGWMRL94sTfKnjYfd+dPq15261bpcWEq1fJvuWsoSEt/3W7tRZlNMolJylxWQEPJTGRP6lTpwz5YpSz3ryxcUE1nzcaSeieFTeArIKH3Fq8GSX9koJqc7O9C6owNL0lO5CKsZTfzS7bqTt3+LPxornxKu2Cz6Oj5IymUkTLCOB54iWAKOIaMRE7JXbS/zOMwYYhMQ9/gOLOnPxBZh8/dlhb06+Vs9B6FIi4cYmJInGgEyGIkbHgc8idkWHgHHRecVsTMU/mwuuY3tYcv3TJWW1NGJrdJY113WtkdxaJU84BqSK7rRFXdc/Dd+w5rbFeDHG8rc2IiQj2UmwQsY1iKFIxlKSg46AjARfnkGGISOZHO6JRnkNiHjzPsY92iGFZoultLNu6OtZs+3m4CCIZnxGpIjGvUsv2UAEUQ9NblrSUoNDDQP4KT+TH2/QWJT/eFgjwNaRnnGHI4x3NzRXZbQ89QBg0GsQ2Wo+SnZR1uFycYbBI3kdv2XEAiw35KqQMGkDoYaCeaDzi29jIuziuYYyVua1jANrFFECTpgCaNAXQpCmAJk0BNGkKoElTACsNUB39ZTFQAMMW/78xypQpU6ZMmbIjP9e+AkAlsBlIjsPOAAAAAElFTkSuQmCC" }), h("h2", { key: '0ea76a87518b2a0c2a171bc0f40cb4767f6683e9', class: "green-text margin-b" }, "You don't have permission to access this application."), h("h3", { key: '1dc9d8f8f2ef3a34bf8cb887679c574a59fe5a75', class: "green-text" }, "Please contact the administration."), (this.config.defaultLink.url && this.showUnauthorizedModal) ?
4304
+ ((_t = (_s = (_r = (_q = (_p = this.config) === null || _p === void 0 ? void 0 : _p.menu) === null || _q === void 0 ? void 0 : _q.local) === null || _r === void 0 ? void 0 : _r.links) === null || _s === void 0 ? void 0 : _s.length) !== null && _t !== void 0 ? _t : 0) === 0)) && (h("div", null, h("h3", { class: "gray-text" }, "No installed ", ((_w = (_v = (_u = this.config) === null || _u === void 0 ? void 0 : _u.menu) === null || _v === void 0 ? void 0 : _v.local) === null || _w === void 0 ? void 0 : _w.name) || "menu", " found."), h("p", { class: "gray-text" }, "Please contact administration.")))))))))), h("div", { key: '2a36c585f0f83380bc08b30141df91c1532b4a28', id: "appPermissionErrorModal", class: "modal" }, h("div", { key: '8fbbb80e22591c105c5010689d2f91909652ed8c', class: "modal-content" }, h("img", { key: '1621c2b97802968da0e6429e1b1571eb4080ef68', src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGD0lEQVR4nO2cbU8TWRTH/W5WEAmF4nNiieFFoeBjYhQUWzUWYkpbDfGFCR9CoolvQF9aWgG3kMCG8LACC1ikuCuUh7bH/M/MmW131S2ZqTDjPcmkdub2tvPj3HP/55yJR44oU6ZMmTJlyg7YOsL9pI7+shkogGFzDqMAhhVAOsiQozwwrACS8sCwfXd+tYTDCiApDwwf/FJUSzisAJKjNhFlPzYF0KQpgCZNATRpCqBJUwBNmgJo0hRAk6YAmjQF0KkAs4uLtPz8OU2HQpRqaaFkQwPFq6v5SHo8fA7XVgYGKLu0dGC/81ABLORylB4cpInLl+nt0aP7OiauXKH00BAV8vlfE2AmkaCxpiYDSKK6mqaammjx+nX6FAzS348e0VYkwgf+jXO4Nun18lj53PuLF2kjmfx1AOa3t2mmt9cAkDxxghauXaPN3l7KxmJlHRgLmKNutzHPTCTCczsa4G4mQ6nWVr7h4WPHaL6trQTc+r17NOf30/iZMzTmdtNwVRWPA2Scm/H56FMgQNlolMfDO/9ob+cxmDPl99PuxoYzAe5mMrzcxOvWAALgolFauXmTxurry45/gPvnjRsG+LW7d3lOWdKVhHggAPPb24bnvW9ooL96evjGP4dC9NvJkwaY0fPnaa6vjzLJJG19+ED5bJY/u5NOUyYep/lnz2jk3Ll/4p/Hw/B4ru5unls8Mb+z4xyAM3rMg5cIvHRXFyVqavg8oKy+elXWjooxqy9f0luXy5gTm4xAFE+cjcWcATCTSGgxr6rKWLaAF9fj1u+BAOW2tsqeL7+7S5OdnRq8mhpaf/CA5xSI8EiJiRsjI/YGWMjlDKmCDUOWrXje3NOnRIWCaXh45biqL+f59nYjHlqtE38qwPTgoLHMeLeNRo2YB8+zEp7ExK1olI+Rujo+t/b6tX0BTugZBnQebha7rcQ8K5Ytw9O9WWKi7M7QiZKx2BJgdnHRyDDE+0SqYMOwEt7k7dvaxqJLHHwXvpMzFpeLtpeX7QdwZWCAbwjpmYhkkSrlxqVy4WEc4q1IHBbbsRhNXrjA71devLAfwOlQiH88lhJuBhkGbxx9fZbDE4NO5LTO5+OxCB14P93dbT+AKZ9P84ZgkG8GqRjeQ9ZUAh4MYhvXxs+e5fHwRBbWra32A5j0ePjHf9H1mST+2YWFisCDba+u8vV3tbWGNuT3jY32AxjXS06QFLgZKUH9aPct7O3RVFfXf+BlHj6kZG2tBq+j47tpGs5LoYKrNpGI9v74cfsDHNazg+/dvFl4sNzmprHz2x5g8l9LWMTuzsePli7bYkMBgqVMfb39l3CqpeXbm0g8XhF439xEgkGjOmN7GTOjA4XU2Be8zs6y4MFmnzzRpJLfXypjenrsK6Qnvd4SSQGxCyFtNbxiIb1+/74mpL1e+wrp7NISp1ElqZwuZZB2WQkPZqRyevz7Eg5zCc22qVxxMUGWMRL94sTfKnjYfd+dPq15261bpcWEq1fJvuWsoSEt/3W7tRZlNMolJylxWQEPJTGRP6lTpwz5YpSz3ryxcUE1nzcaSeieFTeArIKH3Fq8GSX9koJqc7O9C6owNL0lO5CKsZTfzS7bqTt3+LPxornxKu2Cz6Oj5IymUkTLCOB54iWAKOIaMRE7JXbS/zOMwYYhMQ9/gOLOnPxBZh8/dlhb06+Vs9B6FIi4cYmJInGgEyGIkbHgc8idkWHgHHRecVsTMU/mwuuY3tYcv3TJWW1NGJrdJY113WtkdxaJU84BqSK7rRFXdc/Dd+w5rbFeDHG8rc2IiQj2UmwQsY1iKFIxlKSg46AjARfnkGGISOZHO6JRnkNiHjzPsY92iGFZoultLNu6OtZs+3m4CCIZnxGpIjGvUsv2UAEUQ9NblrSUoNDDQP4KT+TH2/QWJT/eFgjwNaRnnGHI4x3NzRXZbQ89QBg0GsQ2Wo+SnZR1uFycYbBI3kdv2XEAiw35KqQMGkDoYaCeaDzi29jIuziuYYyVua1jANrFFECTpgCaNAXQpCmAJk0BNGkKoElTACsNUB39ZTFQAMMW/78xypQpU6ZMmbIjP9e+AkAlsBlIjsPOAAAAAElFTkSuQmCC" }), h("h2", { key: 'f9a6ba63c8d9ca116ad61a1eae25fca676b88767', class: "green-text margin-b" }, "You don't have permission to access this application."), h("h3", { key: '12783289a6b8ef86c096457555f3371cbbde39dc', class: "green-text" }, "Please contact the administration."), (this.config.defaultLink.url && this.showUnauthorizedModal) ?
4199
4305
  h("div", null, h("h4", { class: "gray-text" }, "You will be automatically redirected to the portal."), h("div", { id: "countdown" }, h("div", { id: "countdown-number" }), h("svg", null, h("circle", { r: "18", cx: "20", cy: "20" }))))
4200
4306
  : h("div", null))));
4201
4307
  }
4202
4308
  get el() { return getElement(this); }
4203
4309
  };
4204
- DashButtonComponent.style = DashButtonStyle0;
4310
+ DashButtonComponent.style = dashButtonCss();
4205
4311
 
4206
4312
  export { DashButtonComponent as dash_button };
4207
-
4208
- //# sourceMappingURL=dash-button.entry.js.map