1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.isHandle = isHandle;
|
7 | exports.isNonPrimitiveHandle = isNonPrimitiveHandle;
|
8 | exports.constants = constants;
|
9 | exports.isSmallInt = isSmallInt;
|
10 | exports.encodeNegative = encodeNegative;
|
11 | exports.decodeNegative = decodeNegative;
|
12 | exports.encodePositive = encodePositive;
|
13 | exports.decodePositive = decodePositive;
|
14 | exports.encodeHandle = encodeHandle;
|
15 | exports.decodeHandle = decodeHandle;
|
16 | exports.encodeImmediate = encodeImmediate;
|
17 | exports.decodeImmediate = decodeImmediate;
|
18 |
|
19 | var _assert = require("./assert");
|
20 |
|
21 | function isHandle(value) {
|
22 | return value >= 0;
|
23 | }
|
24 |
|
25 | function isNonPrimitiveHandle(value) {
|
26 | return value > 3
|
27 | /* ENCODED_UNDEFINED_HANDLE */
|
28 | ;
|
29 | }
|
30 |
|
31 | function constants(...values) {
|
32 | return [false, true, null, undefined, ...values];
|
33 | }
|
34 |
|
35 | function isSmallInt(value) {
|
36 | return value % 1 === 0 && value <= 536870911
|
37 | /* MAX_INT */
|
38 | && value >= -536870912
|
39 | /* MIN_INT */
|
40 | ;
|
41 | }
|
42 |
|
43 | function encodeNegative(num) {
|
44 | if (false
|
45 | /* LOCAL_DEBUG */
|
46 | ) {
|
47 | (0, _assert.debugAssert)(num % 1 === 0 && num >= -536870912
|
48 | /* MIN_INT */
|
49 | && num < 0, `Could not encode negative: ${num}`);
|
50 | }
|
51 |
|
52 | return num & -536870913
|
53 | /* SIGN_BIT */
|
54 | ;
|
55 | }
|
56 |
|
57 | function decodeNegative(num) {
|
58 | if (false
|
59 | /* LOCAL_DEBUG */
|
60 | ) {
|
61 | (0, _assert.debugAssert)(num % 1 === 0 && num < ~536870911
|
62 | /* MAX_INT */
|
63 | && num >= -1073741824
|
64 | /* MIN_SMI */
|
65 | , `Could not decode negative: ${num}`);
|
66 | }
|
67 |
|
68 | return num | ~-536870913
|
69 | /* SIGN_BIT */
|
70 | ;
|
71 | }
|
72 |
|
73 | function encodePositive(num) {
|
74 | if (false
|
75 | /* LOCAL_DEBUG */
|
76 | ) {
|
77 | (0, _assert.debugAssert)(num % 1 === 0 && num >= 0 && num <= 536870911
|
78 | /* MAX_INT */
|
79 | , `Could not encode positive: ${num}`);
|
80 | }
|
81 |
|
82 | return ~num;
|
83 | }
|
84 |
|
85 | function decodePositive(num) {
|
86 | if (false
|
87 | /* LOCAL_DEBUG */
|
88 | ) {
|
89 | (0, _assert.debugAssert)(num % 1 === 0 && num <= 0 && num >= ~536870911
|
90 | /* MAX_INT */
|
91 | , `Could not decode positive: ${num}`);
|
92 | }
|
93 |
|
94 | return ~num;
|
95 | }
|
96 |
|
97 | function encodeHandle(num) {
|
98 | if (false
|
99 | /* LOCAL_DEBUG */
|
100 | ) {
|
101 | (0, _assert.debugAssert)(num % 1 === 0 && num >= 0 && num <= 1073741823
|
102 | /* MAX_SMI */
|
103 | , `Could not encode handle: ${num}`);
|
104 | }
|
105 |
|
106 | return num;
|
107 | }
|
108 |
|
109 | function decodeHandle(num) {
|
110 | if (false
|
111 | /* LOCAL_DEBUG */
|
112 | ) {
|
113 | (0, _assert.debugAssert)(num % 1 === 0 && num <= 1073741823
|
114 | /* MAX_SMI */
|
115 | && num >= 0, `Could not decode handle: ${num}`);
|
116 | }
|
117 |
|
118 | return num;
|
119 | }
|
120 |
|
121 | function encodeImmediate(num) {
|
122 | num |= 0;
|
123 | return num < 0 ? encodeNegative(num) : encodePositive(num);
|
124 | }
|
125 |
|
126 | function decodeImmediate(num) {
|
127 | num |= 0;
|
128 | return num > -536870913
|
129 | /* SIGN_BIT */
|
130 | ? decodePositive(num) : decodeNegative(num);
|
131 | } // Warm
|
132 |
|
133 |
|
134 | [1, 2, 3].forEach(x => decodeHandle(encodeHandle(x)));
|
135 | [1, -1].forEach(x => decodeImmediate(encodeImmediate(x)));
|
136 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL2ltbWVkaWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUF3RE0sU0FBQSxRQUFBLENBQUEsS0FBQSxFQUFnQztBQUNwQyxTQUFPLEtBQUssSUFBWixDQUFBO0FBQ0Q7O0FBRUssU0FBQSxvQkFBQSxDQUFBLEtBQUEsRUFBNEM7QUFDaEQsU0FBTyxLQUFLLEdBQUE7QUFBQTtBQUFaO0FBQ0Q7O0FBRUssU0FBQSxTQUFBLENBQW9CLEdBQXBCLE1BQUEsRUFBd0M7QUFDNUMsU0FBTyxDQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLFNBQUEsRUFBK0IsR0FBdEMsTUFBTyxDQUFQO0FBQ0Q7O0FBRUssU0FBQSxVQUFBLENBQUEsS0FBQSxFQUFrQztBQUN0QyxTQUNFLEtBQUssR0FBTCxDQUFBLEtBQUEsQ0FBQSxJQUFtQixLQUFLLElBQUE7QUFBQTtBQUF4QixLQUEwRCxLQUFLLElBQUEsQ0FBQTtBQUFBO0FBRGpFO0FBR0Q7O0FBRUssU0FBQSxjQUFBLENBQUEsR0FBQSxFQUFvQztBQUN4QyxNQUFBO0FBQUE7QUFBQSxJQUFpQjtBQUNmLCtCQUNFLEdBQUcsR0FBSCxDQUFBLEtBQUEsQ0FBQSxJQUFpQixHQUFHLElBQUEsQ0FBQTtBQUFBO0FBQXBCLFNBQXNELEdBQUcsR0FEckQsQ0FBTixFQUVFLDhCQUE4QixHQUZoQyxFQUFBO0FBSUQ7O0FBRUQsU0FBTyxHQUFHLEdBQUEsQ0FBQTtBQUFBO0FBQVY7QUFDRDs7QUFFSyxTQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQW9DO0FBQ3hDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsK0JBQ0UsR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsR0FBRyxDQUFBO0FBQUE7QUFBdkIsU0FBc0QsR0FBRyxJQUFBLENBQUE7QUFBQTtBQUQzRCxRQUVFLDhCQUE4QixHQUZoQyxFQUFBO0FBSUQ7O0FBRUQsU0FBTyxHQUFHLEdBQUcsQ0FBQSxDQUFBO0FBQUE7QUFBYjtBQUNEOztBQUVLLFNBQUEsY0FBQSxDQUFBLEdBQUEsRUFBb0M7QUFDeEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZiwrQkFDRSxHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFwQixDQUFBLElBQTZCLEdBQUcsSUFBQTtBQUFBO0FBRGxDLFFBRUUsOEJBQThCLEdBRmhDLEVBQUE7QUFJRDs7QUFFRCxTQUFPLENBQVAsR0FBQTtBQUNEOztBQUVLLFNBQUEsY0FBQSxDQUFBLEdBQUEsRUFBb0M7QUFDeEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZiwrQkFDRSxHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFwQixDQUFBLElBQTZCLEdBQUcsSUFBSSxDQUFBO0FBQUE7QUFEdEMsUUFFRSw4QkFBOEIsR0FGaEMsRUFBQTtBQUlEOztBQUVELFNBQU8sQ0FBUCxHQUFBO0FBQ0Q7O0FBRUssU0FBQSxZQUFBLENBQUEsR0FBQSxFQUFrQztBQUN0QyxNQUFBO0FBQUE7QUFBQSxJQUFpQjtBQUNmLCtCQUNFLEdBQUcsR0FBSCxDQUFBLEtBQUEsQ0FBQSxJQUFpQixHQUFHLElBQXBCLENBQUEsSUFBNkIsR0FBRyxJQUFBO0FBQUE7QUFEbEMsUUFFRSw0QkFBNEIsR0FGOUIsRUFBQTtBQUlEOztBQUVELFNBQUEsR0FBQTtBQUNEOztBQUVLLFNBQUEsWUFBQSxDQUFBLEdBQUEsRUFBa0M7QUFDdEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZiwrQkFDRSxHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFBO0FBQUE7QUFBcEIsU0FBc0QsR0FBRyxJQURyRCxDQUFOLEVBRUUsNEJBQTRCLEdBRjlCLEVBQUE7QUFJRDs7QUFFRCxTQUFBLEdBQUE7QUFDRDs7QUFFSyxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQXFDO0FBQ3pDLEVBQUEsR0FBRyxJQUFILENBQUE7QUFDQSxTQUFPLEdBQUcsR0FBSCxDQUFBLEdBQVUsY0FBYyxDQUF4QixHQUF3QixDQUF4QixHQUFnQyxjQUFjLENBQXJELEdBQXFELENBQXJEO0FBQ0Q7O0FBRUssU0FBQSxlQUFBLENBQUEsR0FBQSxFQUFxQztBQUN6QyxFQUFBLEdBQUcsSUFBSCxDQUFBO0FBQ0EsU0FBTyxHQUFHLEdBQUEsQ0FBQTtBQUFBO0FBQUgsSUFBb0MsY0FBYyxDQUFsRCxHQUFrRCxDQUFsRCxHQUEwRCxjQUFjLENBQS9FLEdBQStFLENBQS9FO0VBR0Y7OztBQUNBLENBQUEsQ0FBQSxFQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsT0FBQSxDQUFtQixDQUFELElBQU8sWUFBWSxDQUFDLFlBQVksQ0FBbEQsQ0FBa0QsQ0FBYixDQUFyQztBQUNBLENBQUEsQ0FBQSxFQUFJLENBQUosQ0FBQSxFQUFBLE9BQUEsQ0FBaUIsQ0FBRCxJQUFPLGVBQWUsQ0FBQyxlQUFlLENBQXRELENBQXNELENBQWhCLENBQXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9DQUxfREVCVUcgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBkZWJ1Z0Fzc2VydCBhcyBhc3NlcnQgfSBmcm9tICcuL2Fzc2VydCc7XG5cbi8qXG4gIEVuY29kaW5nIG5vdGVzXG5cbiAgV2UgdXNlIDMwIGJpdCBpbnRlZ2VycyBmb3IgZW5jb2RpbmcsIHNvIHRoYXQgd2UgZG9uJ3QgZXZlciBlbmNvZGUgYSBub24tU01JXG4gIGludGVnZXIgdG8gcHVzaCBvbiB0aGUgc3RhY2suXG5cbiAgSGFuZGxlcyBhcmUgPj0gMFxuICBJbW1lZGlhdGVzIGFyZSA8IDBcblxuICBUcnVlLCBGYWxzZSwgVW5kZWZpbmVkIGFuZCBOdWxsIGFyZSBwdXNoZWQgYXMgaGFuZGxlcyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsXG4gIHdpdGggd2VsbCBrbm93biBoYW5kbGVzICgwLCAxLCAyLCAzKVxuXG4gIFRoZSBuZWdhdGl2ZSBzcGFjZSBpcyBkaXZpZGVkIGludG8gcG9zaXRpdmVzIGFuZCBuZWdhdGl2ZXMuIFBvc2l0aXZlcyBhcmVcbiAgaGlnaGVyIG51bWJlcnMgKC0xLCAtMiwgLTMsIGV0YyksIG5lZ2F0aXZlcyBhcmUgbG93ZXIuXG5cbiAgV2Ugb25seSBlbmNvZGUgaW1tZWRpYXRlcyBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgMS4gVG8gdHJhbnNmZXIgb3ZlciB0aGUgd2lyZSwgc28gdGhleSdyZSBzbWFsbGVyIGluIGdlbmVyYWxcbiAgMi4gV2hlbiBwdXNoaW5nIHZhbHVlcyBvbnRvIHRoZSBzdGFjayBmcm9tIHRoZSBsb3cgbGV2ZWwvaW5uZXIgVk0sIHdoaWNoIG1heVxuICAgICBiZSBjb252ZXJ0ZWQgaW50byBXQVNNIG9uZSBkYXkuXG5cbiAgVGhpcyBhbGxvd3MgdGhlIGxvdy1sZXZlbCBWTSB0byBhbHdheXMgdXNlIFNNSXMsIGFuZCB0byBtaW5pbWl6ZSB1c2luZyBKU1xuICB2YWx1ZXMgdmlhIGhhbmRsZXMgZm9yIHRoaW5ncyBsaWtlIHRoZSBzdGFjayBwb2ludGVyIGFuZCBmcmFtZSBwb2ludGVyLlxuICBFeHRlcm5hbGx5LCBtb3N0IGNvZGUgcHVzaGVzIHZhbHVlcyBhcyBKUyB2YWx1ZXMsIGV4Y2VwdCB3aGVuIGJlaW5nIHB1bGxlZFxuICBmcm9tIHRoZSBhcHBlbmQgYnl0ZSBjb2RlIHdoZXJlIGl0IHdhcyBhbHJlYWR5IGVuY29kZWQuXG5cbiAgTG9naWNhbGx5LCB0aGlzIGlzIGJlY2F1c2UgdGhlIGxvdyBsZXZlbCBWTSBkb2Vzbid0IHJlYWxseSBjYXJlIGFib3V0IHRoZXNlXG4gIGhpZ2hlciBsZXZlbCB2YWx1ZXMuIEZvciBpbnN0YW5jZSwgdGhlIHJlc3VsdCBvZiBhIHVzZXJsYW5kIGhlbHBlciBtYXkgYmUgYVxuICBudW1iZXIsIG9yIGEgYm9vbGVhbiwgb3IgdW5kZWZpbmVkL251bGwsIGJ1dCBpdCdzIGV4dHJhIHdvcmsgdG8gZmlndXJlIHRoYXRcbiAgb3V0IGFuZCBwdXNoIGl0IGNvcnJlY3RseSwgdnMuIGp1c3QgcHVzaGluZyB0aGUgdmFsdWUgYXMgYSBKUyB2YWx1ZSB3aXRoIGFcbiAgaGFuZGxlLlxuXG4gIE5vdGU6IFRoZSBkZXRhaWxzIGNvdWxkIGNoYW5nZSBoZXJlIGluIHRoZSBmdXR1cmUsIHRoaXMgaXMganVzdCB0aGUgY3VycmVudFxuICBzdHJhdGVneS5cbiovXG5cbmV4cG9ydCBjb25zdCBlbnVtIEltbWVkaWF0ZUNvbnN0YW50cyB7XG4gIE1BWF9TTUkgPSAyICoqIDMwIC0gMSxcbiAgTUlOX1NNSSA9IH5NQVhfU01JLFxuICBTSUdOX0JJVCA9IH4oMiAqKiAyOSksXG4gIE1BWF9JTlQgPSB+U0lHTl9CSVQgLSAxLFxuICBNSU5fSU5UID0gfk1BWF9JTlQsXG5cbiAgRkFMU0VfSEFORExFID0gMCxcbiAgVFJVRV9IQU5ETEUgPSAxLFxuICBOVUxMX0hBTkRMRSA9IDIsXG4gIFVOREVGSU5FRF9IQU5ETEUgPSAzLFxuXG4gIEVOQ09ERURfRkFMU0VfSEFORExFID0gRkFMU0VfSEFORExFLFxuICBFTkNPREVEX1RSVUVfSEFORExFID0gVFJVRV9IQU5ETEUsXG4gIEVOQ09ERURfTlVMTF9IQU5ETEUgPSBOVUxMX0hBTkRMRSxcbiAgRU5DT0RFRF9VTkRFRklORURfSEFORExFID0gVU5ERUZJTkVEX0hBTkRMRSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGFuZGxlKHZhbHVlOiBudW1iZXIpIHtcbiAgcmV0dXJuIHZhbHVlID49IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vblByaW1pdGl2ZUhhbmRsZSh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IEltbWVkaWF0ZUNvbnN0YW50cy5FTkNPREVEX1VOREVGSU5FRF9IQU5ETEU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdGFudHMoLi4udmFsdWVzOiB1bmtub3duW10pOiB1bmtub3duW10ge1xuICByZXR1cm4gW2ZhbHNlLCB0cnVlLCBudWxsLCB1bmRlZmluZWQsIC4uLnZhbHVlc107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NtYWxsSW50KHZhbHVlOiBudW1iZXIpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSAlIDEgPT09IDAgJiYgdmFsdWUgPD0gSW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9JTlQgJiYgdmFsdWUgPj0gSW1tZWRpYXRlQ29uc3RhbnRzLk1JTl9JTlRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZU5lZ2F0aXZlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtID49IEltbWVkaWF0ZUNvbnN0YW50cy5NSU5fSU5UICYmIG51bSA8IDAsXG4gICAgICBgQ291bGQgbm90IGVuY29kZSBuZWdhdGl2ZTogJHtudW19YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVtICYgSW1tZWRpYXRlQ29uc3RhbnRzLlNJR05fQklUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlTmVnYXRpdmUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPCB+SW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9JTlQgJiYgbnVtID49IEltbWVkaWF0ZUNvbnN0YW50cy5NSU5fU01JLFxuICAgICAgYENvdWxkIG5vdCBkZWNvZGUgbmVnYXRpdmU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bSB8IH5JbW1lZGlhdGVDb25zdGFudHMuU0lHTl9CSVQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQb3NpdGl2ZShudW06IG51bWJlcikge1xuICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBudW0gJSAxID09PSAwICYmIG51bSA+PSAwICYmIG51bSA8PSBJbW1lZGlhdGVDb25zdGFudHMuTUFYX0lOVCxcbiAgICAgIGBDb3VsZCBub3QgZW5jb2RlIHBvc2l0aXZlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB+bnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUG9zaXRpdmUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPD0gMCAmJiBudW0gPj0gfkltbWVkaWF0ZUNvbnN0YW50cy5NQVhfSU5ULFxuICAgICAgYENvdWxkIG5vdCBkZWNvZGUgcG9zaXRpdmU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIH5udW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVIYW5kbGUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPj0gMCAmJiBudW0gPD0gSW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9TTUksXG4gICAgICBgQ291bGQgbm90IGVuY29kZSBoYW5kbGU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUhhbmRsZShudW06IG51bWJlcikge1xuICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBudW0gJSAxID09PSAwICYmIG51bSA8PSBJbW1lZGlhdGVDb25zdGFudHMuTUFYX1NNSSAmJiBudW0gPj0gMCxcbiAgICAgIGBDb3VsZCBub3QgZGVjb2RlIGhhbmRsZTogJHtudW19YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSW1tZWRpYXRlKG51bTogbnVtYmVyKSB7XG4gIG51bSB8PSAwO1xuICByZXR1cm4gbnVtIDwgMCA/IGVuY29kZU5lZ2F0aXZlKG51bSkgOiBlbmNvZGVQb3NpdGl2ZShudW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlSW1tZWRpYXRlKG51bTogbnVtYmVyKSB7XG4gIG51bSB8PSAwO1xuICByZXR1cm4gbnVtID4gSW1tZWRpYXRlQ29uc3RhbnRzLlNJR05fQklUID8gZGVjb2RlUG9zaXRpdmUobnVtKSA6IGRlY29kZU5lZ2F0aXZlKG51bSk7XG59XG5cbi8vIFdhcm1cblsxLCAyLCAzXS5mb3JFYWNoKCh4KSA9PiBkZWNvZGVIYW5kbGUoZW5jb2RlSGFuZGxlKHgpKSk7XG5bMSwgLTFdLmZvckVhY2goKHgpID0+IGRlY29kZUltbWVkaWF0ZShlbmNvZGVJbW1lZGlhdGUoeCkpKTtcbiJdLCJzb3VyY2VSb290IjoiIn0= |
\ | No newline at end of file |