1 | import { debugAssert as assert } from './assert';
|
2 | export function isHandle(value) {
|
3 | return value >= 0;
|
4 | }
|
5 | export function isNonPrimitiveHandle(value) {
|
6 | return value > 3
|
7 | /* ENCODED_UNDEFINED_HANDLE */
|
8 | ;
|
9 | }
|
10 | export function constants() {
|
11 | for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
|
12 | values[_key] = arguments[_key];
|
13 | }
|
14 |
|
15 | return [false, true, null, undefined].concat(values);
|
16 | }
|
17 | export function isSmallInt(value) {
|
18 | return value % 1 === 0 && value <= 536870911
|
19 | /* MAX_INT */
|
20 | && value >= -536870912
|
21 | /* MIN_INT */
|
22 | ;
|
23 | }
|
24 | export function encodeNegative(num) {
|
25 | if (false
|
26 | /* LOCAL_DEBUG */
|
27 | ) {
|
28 | assert(num % 1 === 0 && num >= -536870912
|
29 | /* MIN_INT */
|
30 | && num < 0, "Could not encode negative: " + num);
|
31 | }
|
32 |
|
33 | return num & -536870913
|
34 | /* SIGN_BIT */
|
35 | ;
|
36 | }
|
37 | export function decodeNegative(num) {
|
38 | if (false
|
39 | /* LOCAL_DEBUG */
|
40 | ) {
|
41 | assert(num % 1 === 0 && num < ~536870911
|
42 | /* MAX_INT */
|
43 | && num >= -1073741824
|
44 | /* MIN_SMI */
|
45 | , "Could not decode negative: " + num);
|
46 | }
|
47 |
|
48 | return num | ~-536870913
|
49 | /* SIGN_BIT */
|
50 | ;
|
51 | }
|
52 | export function encodePositive(num) {
|
53 | if (false
|
54 | /* LOCAL_DEBUG */
|
55 | ) {
|
56 | assert(num % 1 === 0 && num >= 0 && num <= 536870911
|
57 | /* MAX_INT */
|
58 | , "Could not encode positive: " + num);
|
59 | }
|
60 |
|
61 | return ~num;
|
62 | }
|
63 | export function decodePositive(num) {
|
64 | if (false
|
65 | /* LOCAL_DEBUG */
|
66 | ) {
|
67 | assert(num % 1 === 0 && num <= 0 && num >= ~536870911
|
68 | /* MAX_INT */
|
69 | , "Could not decode positive: " + num);
|
70 | }
|
71 |
|
72 | return ~num;
|
73 | }
|
74 | export function encodeHandle(num) {
|
75 | if (false
|
76 | /* LOCAL_DEBUG */
|
77 | ) {
|
78 | assert(num % 1 === 0 && num >= 0 && num <= 1073741823
|
79 | /* MAX_SMI */
|
80 | , "Could not encode handle: " + num);
|
81 | }
|
82 |
|
83 | return num;
|
84 | }
|
85 | export function decodeHandle(num) {
|
86 | if (false
|
87 | /* LOCAL_DEBUG */
|
88 | ) {
|
89 | assert(num % 1 === 0 && num <= 1073741823
|
90 | /* MAX_SMI */
|
91 | && num >= 0, "Could not decode handle: " + num);
|
92 | }
|
93 |
|
94 | return num;
|
95 | }
|
96 | export function encodeImmediate(num) {
|
97 | num |= 0;
|
98 | return num < 0 ? encodeNegative(num) : encodePositive(num);
|
99 | }
|
100 | export function decodeImmediate(num) {
|
101 | num |= 0;
|
102 | return num > -536870913
|
103 | /* SIGN_BIT */
|
104 | ? decodePositive(num) : decodeNegative(num);
|
105 | } // Warm
|
106 |
|
107 | [1, 2, 3].forEach(function (x) {
|
108 | return decodeHandle(encodeHandle(x));
|
109 | });
|
110 | [1, -1].forEach(function (x) {
|
111 | return decodeImmediate(encodeImmediate(x));
|
112 | });
|
113 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL2ltbWVkaWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFdBQVcsSUFBcEIsTUFBQSxRQUFBLFVBQUE7QUF3REEsT0FBTSxTQUFBLFFBQUEsQ0FBQSxLQUFBLEVBQWdDO0FBQ3BDLFNBQU8sS0FBSyxJQUFaLENBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxvQkFBQSxDQUFBLEtBQUEsRUFBNEM7QUFDaEQsU0FBTyxLQUFLLEdBQUE7QUFBQTtBQUFaO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsU0FBQSxHQUF3QztBQUFBLG9DQUF4QyxNQUF3QztBQUF4QyxJQUFBLE1BQXdDO0FBQUE7O0FBQzVDLFVBQU8sS0FBUCxFQUFPLElBQVAsRUFBTyxJQUFQLEVBQU8sU0FBUCxTQUFBLE1BQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxVQUFBLENBQUEsS0FBQSxFQUFrQztBQUN0QyxTQUNFLEtBQUssR0FBTCxDQUFBLEtBQUEsQ0FBQSxJQUFtQixLQUFLLElBQUE7QUFBQTtBQUF4QixLQUEwRCxLQUFLLElBQUEsQ0FBQTtBQUFBO0FBRGpFO0FBR0Q7QUFFRCxPQUFNLFNBQUEsY0FBQSxDQUFBLEdBQUEsRUFBb0M7QUFDeEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZixNQUFBLE1BQU0sQ0FDSixHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFBLENBQUE7QUFBQTtBQUFwQixTQUFzRCxHQUFHLEdBRHJELENBQUEsa0NBQU4sR0FBTSxDQUFOO0FBSUQ7O0FBRUQsU0FBTyxHQUFHLEdBQUEsQ0FBQTtBQUFBO0FBQVY7QUFDRDtBQUVELE9BQU0sU0FBQSxjQUFBLENBQUEsR0FBQSxFQUFvQztBQUN4QyxNQUFBO0FBQUE7QUFBQSxJQUFpQjtBQUNmLE1BQUEsTUFBTSxDQUNKLEdBQUcsR0FBSCxDQUFBLEtBQUEsQ0FBQSxJQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUFBO0FBQXZCLFNBQXNELEdBQUcsSUFBQSxDQUFBO0FBQUE7QUFEckQsd0NBQU4sR0FBTSxDQUFOO0FBSUQ7O0FBRUQsU0FBTyxHQUFHLEdBQUcsQ0FBQSxDQUFBO0FBQUE7QUFBYjtBQUNEO0FBRUQsT0FBTSxTQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQW9DO0FBQ3hDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsTUFBQSxNQUFNLENBQ0osR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsSUFBcEIsQ0FBQSxJQUE2QixHQUFHLElBQUE7QUFBQTtBQUQ1Qix3Q0FBTixHQUFNLENBQU47QUFJRDs7QUFFRCxTQUFPLENBQVAsR0FBQTtBQUNEO0FBRUQsT0FBTSxTQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQW9DO0FBQ3hDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsTUFBQSxNQUFNLENBQ0osR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsSUFBcEIsQ0FBQSxJQUE2QixHQUFHLElBQUksQ0FBQTtBQUFBO0FBRGhDLHdDQUFOLEdBQU0sQ0FBTjtBQUlEOztBQUVELFNBQU8sQ0FBUCxHQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsWUFBQSxDQUFBLEdBQUEsRUFBa0M7QUFDdEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZixNQUFBLE1BQU0sQ0FDSixHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFwQixDQUFBLElBQTZCLEdBQUcsSUFBQTtBQUFBO0FBRDVCLHNDQUFOLEdBQU0sQ0FBTjtBQUlEOztBQUVELFNBQUEsR0FBQTtBQUNEO0FBRUQsT0FBTSxTQUFBLFlBQUEsQ0FBQSxHQUFBLEVBQWtDO0FBQ3RDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsTUFBQSxNQUFNLENBQ0osR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsSUFBQTtBQUFBO0FBQXBCLFNBQXNELEdBQUcsSUFEckQsQ0FBQSxnQ0FBTixHQUFNLENBQU47QUFJRDs7QUFFRCxTQUFBLEdBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxlQUFBLENBQUEsR0FBQSxFQUFxQztBQUN6QyxFQUFBLEdBQUcsSUFBSCxDQUFBO0FBQ0EsU0FBTyxHQUFHLEdBQUgsQ0FBQSxHQUFVLGNBQWMsQ0FBeEIsR0FBd0IsQ0FBeEIsR0FBZ0MsY0FBYyxDQUFyRCxHQUFxRCxDQUFyRDtBQUNEO0FBRUQsT0FBTSxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQXFDO0FBQ3pDLEVBQUEsR0FBRyxJQUFILENBQUE7QUFDQSxTQUFPLEdBQUcsR0FBQSxDQUFBO0FBQUE7QUFBSCxJQUFvQyxjQUFjLENBQWxELEdBQWtELENBQWxELEdBQTBELGNBQWMsQ0FBL0UsR0FBK0UsQ0FBL0U7RUFHRjs7QUFDQSxDQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLE9BQUEsQ0FBbUIsVUFBQSxDQUFEO0FBQUEsU0FBTyxZQUFZLENBQUMsWUFBWSxDQUFsRCxDQUFrRCxDQUFiLENBQW5CO0FBQUEsQ0FBbEI7QUFDQSxDQUFBLENBQUEsRUFBSSxDQUFKLENBQUEsRUFBQSxPQUFBLENBQWlCLFVBQUEsQ0FBRDtBQUFBLFNBQU8sZUFBZSxDQUFDLGVBQWUsQ0FBdEQsQ0FBc0QsQ0FBaEIsQ0FBdEI7QUFBQSxDQUFoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgZGVidWdBc3NlcnQgYXMgYXNzZXJ0IH0gZnJvbSAnLi9hc3NlcnQnO1xuXG4vKlxuICBFbmNvZGluZyBub3Rlc1xuXG4gIFdlIHVzZSAzMCBiaXQgaW50ZWdlcnMgZm9yIGVuY29kaW5nLCBzbyB0aGF0IHdlIGRvbid0IGV2ZXIgZW5jb2RlIGEgbm9uLVNNSVxuICBpbnRlZ2VyIHRvIHB1c2ggb24gdGhlIHN0YWNrLlxuXG4gIEhhbmRsZXMgYXJlID49IDBcbiAgSW1tZWRpYXRlcyBhcmUgPCAwXG5cbiAgVHJ1ZSwgRmFsc2UsIFVuZGVmaW5lZCBhbmQgTnVsbCBhcmUgcHVzaGVkIGFzIGhhbmRsZXMgaW50byB0aGUgc3ltYm9sIHRhYmxlLFxuICB3aXRoIHdlbGwga25vd24gaGFuZGxlcyAoMCwgMSwgMiwgMylcblxuICBUaGUgbmVnYXRpdmUgc3BhY2UgaXMgZGl2aWRlZCBpbnRvIHBvc2l0aXZlcyBhbmQgbmVnYXRpdmVzLiBQb3NpdGl2ZXMgYXJlXG4gIGhpZ2hlciBudW1iZXJzICgtMSwgLTIsIC0zLCBldGMpLCBuZWdhdGl2ZXMgYXJlIGxvd2VyLlxuXG4gIFdlIG9ubHkgZW5jb2RlIGltbWVkaWF0ZXMgZm9yIHR3byByZWFzb25zOlxuXG4gIDEuIFRvIHRyYW5zZmVyIG92ZXIgdGhlIHdpcmUsIHNvIHRoZXkncmUgc21hbGxlciBpbiBnZW5lcmFsXG4gIDIuIFdoZW4gcHVzaGluZyB2YWx1ZXMgb250byB0aGUgc3RhY2sgZnJvbSB0aGUgbG93IGxldmVsL2lubmVyIFZNLCB3aGljaCBtYXlcbiAgICAgYmUgY29udmVydGVkIGludG8gV0FTTSBvbmUgZGF5LlxuXG4gIFRoaXMgYWxsb3dzIHRoZSBsb3ctbGV2ZWwgVk0gdG8gYWx3YXlzIHVzZSBTTUlzLCBhbmQgdG8gbWluaW1pemUgdXNpbmcgSlNcbiAgdmFsdWVzIHZpYSBoYW5kbGVzIGZvciB0aGluZ3MgbGlrZSB0aGUgc3RhY2sgcG9pbnRlciBhbmQgZnJhbWUgcG9pbnRlci5cbiAgRXh0ZXJuYWxseSwgbW9zdCBjb2RlIHB1c2hlcyB2YWx1ZXMgYXMgSlMgdmFsdWVzLCBleGNlcHQgd2hlbiBiZWluZyBwdWxsZWRcbiAgZnJvbSB0aGUgYXBwZW5kIGJ5dGUgY29kZSB3aGVyZSBpdCB3YXMgYWxyZWFkeSBlbmNvZGVkLlxuXG4gIExvZ2ljYWxseSwgdGhpcyBpcyBiZWNhdXNlIHRoZSBsb3cgbGV2ZWwgVk0gZG9lc24ndCByZWFsbHkgY2FyZSBhYm91dCB0aGVzZVxuICBoaWdoZXIgbGV2ZWwgdmFsdWVzLiBGb3IgaW5zdGFuY2UsIHRoZSByZXN1bHQgb2YgYSB1c2VybGFuZCBoZWxwZXIgbWF5IGJlIGFcbiAgbnVtYmVyLCBvciBhIGJvb2xlYW4sIG9yIHVuZGVmaW5lZC9udWxsLCBidXQgaXQncyBleHRyYSB3b3JrIHRvIGZpZ3VyZSB0aGF0XG4gIG91dCBhbmQgcHVzaCBpdCBjb3JyZWN0bHksIHZzLiBqdXN0IHB1c2hpbmcgdGhlIHZhbHVlIGFzIGEgSlMgdmFsdWUgd2l0aCBhXG4gIGhhbmRsZS5cblxuICBOb3RlOiBUaGUgZGV0YWlscyBjb3VsZCBjaGFuZ2UgaGVyZSBpbiB0aGUgZnV0dXJlLCB0aGlzIGlzIGp1c3QgdGhlIGN1cnJlbnRcbiAgc3RyYXRlZ3kuXG4qL1xuXG5leHBvcnQgY29uc3QgZW51bSBJbW1lZGlhdGVDb25zdGFudHMge1xuICBNQVhfU01JID0gMiAqKiAzMCAtIDEsXG4gIE1JTl9TTUkgPSB+TUFYX1NNSSxcbiAgU0lHTl9CSVQgPSB+KDIgKiogMjkpLFxuICBNQVhfSU5UID0gflNJR05fQklUIC0gMSxcbiAgTUlOX0lOVCA9IH5NQVhfSU5ULFxuXG4gIEZBTFNFX0hBTkRMRSA9IDAsXG4gIFRSVUVfSEFORExFID0gMSxcbiAgTlVMTF9IQU5ETEUgPSAyLFxuICBVTkRFRklORURfSEFORExFID0gMyxcblxuICBFTkNPREVEX0ZBTFNFX0hBTkRMRSA9IEZBTFNFX0hBTkRMRSxcbiAgRU5DT0RFRF9UUlVFX0hBTkRMRSA9IFRSVUVfSEFORExFLFxuICBFTkNPREVEX05VTExfSEFORExFID0gTlVMTF9IQU5ETEUsXG4gIEVOQ09ERURfVU5ERUZJTkVEX0hBTkRMRSA9IFVOREVGSU5FRF9IQU5ETEUsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hhbmRsZSh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiB2YWx1ZSA+PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb25QcmltaXRpdmVIYW5kbGUodmFsdWU6IG51bWJlcikge1xuICByZXR1cm4gdmFsdWUgPiBJbW1lZGlhdGVDb25zdGFudHMuRU5DT0RFRF9VTkRFRklORURfSEFORExFO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RhbnRzKC4uLnZhbHVlczogdW5rbm93bltdKTogdW5rbm93bltdIHtcbiAgcmV0dXJuIFtmYWxzZSwgdHJ1ZSwgbnVsbCwgdW5kZWZpbmVkLCAuLi52YWx1ZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTbWFsbEludCh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgJSAxID09PSAwICYmIHZhbHVlIDw9IEltbWVkaWF0ZUNvbnN0YW50cy5NQVhfSU5UICYmIHZhbHVlID49IEltbWVkaWF0ZUNvbnN0YW50cy5NSU5fSU5UXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVOZWdhdGl2ZShudW06IG51bWJlcikge1xuICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBudW0gJSAxID09PSAwICYmIG51bSA+PSBJbW1lZGlhdGVDb25zdGFudHMuTUlOX0lOVCAmJiBudW0gPCAwLFxuICAgICAgYENvdWxkIG5vdCBlbmNvZGUgbmVnYXRpdmU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bSAmIEltbWVkaWF0ZUNvbnN0YW50cy5TSUdOX0JJVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU5lZ2F0aXZlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtIDwgfkltbWVkaWF0ZUNvbnN0YW50cy5NQVhfSU5UICYmIG51bSA+PSBJbW1lZGlhdGVDb25zdGFudHMuTUlOX1NNSSxcbiAgICAgIGBDb3VsZCBub3QgZGVjb2RlIG5lZ2F0aXZlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudW0gfCB+SW1tZWRpYXRlQ29uc3RhbnRzLlNJR05fQklUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUG9zaXRpdmUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPj0gMCAmJiBudW0gPD0gSW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9JTlQsXG4gICAgICBgQ291bGQgbm90IGVuY29kZSBwb3NpdGl2ZTogJHtudW19YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gfm51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVBvc2l0aXZlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtIDw9IDAgJiYgbnVtID49IH5JbW1lZGlhdGVDb25zdGFudHMuTUFYX0lOVCxcbiAgICAgIGBDb3VsZCBub3QgZGVjb2RlIHBvc2l0aXZlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB+bnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSGFuZGxlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtID49IDAgJiYgbnVtIDw9IEltbWVkaWF0ZUNvbnN0YW50cy5NQVhfU01JLFxuICAgICAgYENvdWxkIG5vdCBlbmNvZGUgaGFuZGxlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVIYW5kbGUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPD0gSW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9TTUkgJiYgbnVtID49IDAsXG4gICAgICBgQ291bGQgbm90IGRlY29kZSBoYW5kbGU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUltbWVkaWF0ZShudW06IG51bWJlcikge1xuICBudW0gfD0gMDtcbiAgcmV0dXJuIG51bSA8IDAgPyBlbmNvZGVOZWdhdGl2ZShudW0pIDogZW5jb2RlUG9zaXRpdmUobnVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUltbWVkaWF0ZShudW06IG51bWJlcikge1xuICBudW0gfD0gMDtcbiAgcmV0dXJuIG51bSA+IEltbWVkaWF0ZUNvbnN0YW50cy5TSUdOX0JJVCA/IGRlY29kZVBvc2l0aXZlKG51bSkgOiBkZWNvZGVOZWdhdGl2ZShudW0pO1xufVxuXG4vLyBXYXJtXG5bMSwgMiwgM10uZm9yRWFjaCgoeCkgPT4gZGVjb2RlSGFuZGxlKGVuY29kZUhhbmRsZSh4KSkpO1xuWzEsIC0xXS5mb3JFYWNoKCh4KSA9PiBkZWNvZGVJbW1lZGlhdGUoZW5jb2RlSW1tZWRpYXRlKHgpKSk7XG4iXSwic291cmNlUm9vdCI6IiJ9 |
\ | No newline at end of file |