// Transcrypt'ed from Python, 2019-06-09 19:19:57 var __name__ = 'org.transcrypt.__runtime__'; export var __envir__ = {}; __envir__.interpreter_name = 'python'; __envir__.transpiler_name = 'transcrypt'; __envir__.executor_name = __envir__.transpiler_name; __envir__.transpiler_version = '3.7.12'; export function __nest__ (headObject, tailNames, value) { var current = headObject; if (tailNames != '') { var tailChain = tailNames.split ('.'); var firstNewIndex = tailChain.length; for (var index = 0; index < tailChain.length; index++) { if (!current.hasOwnProperty (tailChain [index])) { firstNewIndex = index; break; } current = current [tailChain [index]]; } for (var index = firstNewIndex; index < tailChain.length; index++) { current [tailChain [index]] = {}; current = current [tailChain [index]]; } } for (let attrib of Object.getOwnPropertyNames (value)) { Object.defineProperty (current, attrib, { get () {return value [attrib];}, enumerable: true, configurable: true }); } }; export function __init__ (module) { if (!module.__inited__) { module.__all__.__init__ (module.__all__); module.__inited__ = true; } return module.__all__; }; export var __proxy__ = false; export function __get__ (self, func, quotedFuncName) { if (self) { if (self.hasOwnProperty ('__class__') || typeof self == 'string' || self instanceof String) { if (quotedFuncName) { Object.defineProperty (self, quotedFuncName, { value: function () { var args = [] .slice.apply (arguments); return func.apply (null, [self] .concat (args)); }, writable: true, enumerable: true, configurable: true }); } return function () { var args = [] .slice.apply (arguments); return func.apply (null, [self] .concat (args)); }; } else { return func; } } else { return func; } }; export function __getcm__ (self, func, quotedFuncName) { if (self.hasOwnProperty ('__class__')) { return function () { var args = [] .slice.apply (arguments); return func.apply (null, [self.__class__] .concat (args)); }; } else { return function () { var args = [] .slice.apply (arguments); return func.apply (null, [self] .concat (args)); }; } }; export function __getsm__ (self, func, quotedFuncName) { return func; }; export var py_metatype = { __name__: 'type', __bases__: [], __new__: function (meta, name, bases, attribs) { var cls = function () { var args = [] .slice.apply (arguments); return cls.__new__ (args); }; for (var index = bases.length - 1; index >= 0; index--) { var base = bases [index]; for (var attrib in base) { var descrip = Object.getOwnPropertyDescriptor (base, attrib); Object.defineProperty (cls, attrib, descrip); } for (let symbol of Object.getOwnPropertySymbols (base)) { let descrip = Object.getOwnPropertyDescriptor (base, symbol); Object.defineProperty (cls, symbol, descrip); } } cls.__metaclass__ = meta; cls.__name__ = name.startsWith ('py_') ? name.slice (3) : name; cls.__bases__ = bases; for (var attrib in attribs) { var descrip = Object.getOwnPropertyDescriptor (attribs, attrib); Object.defineProperty (cls, attrib, descrip); } for (let symbol of Object.getOwnPropertySymbols (attribs)) { let descrip = Object.getOwnPropertyDescriptor (attribs, symbol); Object.defineProperty (cls, symbol, descrip); } return cls; } }; py_metatype.__metaclass__ = py_metatype; export var object = { __init__: function (self) {}, __metaclass__: py_metatype, __name__: 'object', __bases__: [], __new__: function (args) { var instance = Object.create (this, {__class__: {value: this, enumerable: true}}); if ('__getattr__' in this || '__setattr__' in this) { instance = new Proxy (instance, { get: function (target, name) { let result = target [name]; if (result == undefined) { return target.__getattr__ (name); } else { return result; } }, set: function (target, name, value) { try { target.__setattr__ (name, value); } catch (exception) { target [name] = value; } return true; } }) } this.__init__.apply (null, [instance] .concat (args)); return instance; } }; export function __class__ (name, bases, attribs, meta) { if (meta === undefined) { meta = bases [0] .__metaclass__; } return meta.__new__ (meta, name, bases, attribs); }; export function __pragma__ () {}; export function __call__ (/* , , * */) { var args = [] .slice.apply (arguments); if (typeof args [0] == 'object' && '__call__' in args [0]) { return args [0] .__call__ .apply (args [1], args.slice (2)); } else { return args [0] .apply (args [1], args.slice (2)); } }; __envir__.executor_name = __envir__.transpiler_name; var __main__ = {__file__: ''}; var __except__ = null; export function __kwargtrans__ (anObject) { anObject.__kwargtrans__ = null; anObject.constructor = Object; return anObject; } export function __super__ (aClass, methodName) { for (let base of aClass.__bases__) { if (methodName in base) { return base [methodName]; } } throw new Exception ('Superclass method not found'); } export function property (getter, setter) { if (!setter) { setter = function () {}; } return {get: function () {return getter (this)}, set: function (value) {setter (this, value)}, enumerable: true}; } export function __setproperty__ (anObject, name, descriptor) { if (!anObject.hasOwnProperty (name)) { Object.defineProperty (anObject, name, descriptor); } } export function assert (condition, message) { if (!condition) { throw AssertionError (message, new Error ()); } } export function __mergekwargtrans__ (object0, object1) { var result = {}; for (var attrib in object0) { result [attrib] = object0 [attrib]; } for (var attrib in object1) { result [attrib] = object1 [attrib]; } return result; }; export function __mergefields__ (targetClass, sourceClass) { let fieldNames = ['__reprfields__', '__comparefields__', '__initfields__'] if (sourceClass [fieldNames [0]]) { if (targetClass [fieldNames [0]]) { for (let fieldName of fieldNames) { targetClass [fieldName] = new Set ([...targetClass [fieldName], ...sourceClass [fieldName]]); } } else { for (let fieldName of fieldNames) { targetClass [fieldName] = new Set (sourceClass [fieldName]); } } } } export function __withblock__ (manager, statements) { if (hasattr (manager, '__enter__')) { try { manager.__enter__ (); statements (); manager.__exit__ (); } catch (exception) { if (! (manager.__exit__ (exception.name, exception, exception.stack))) { throw exception; } } } else { statements (); manager.close (); } }; export function dir (obj) { var aList = []; for (var aKey in obj) { aList.push (aKey.startsWith ('py_') ? aKey.slice (3) : aKey); } aList.sort (); return aList; }; export function setattr (obj, name, value) { obj [name] = value; }; export function getattr (obj, name) { return name in obj ? obj [name] : obj ['py_' + name]; }; export function hasattr (obj, name) { try { return name in obj || 'py_' + name in obj; } catch (exception) { return false; } }; export function delattr (obj, name) { if (name in obj) { delete obj [name]; } else { delete obj ['py_' + name]; } }; export function __in__ (element, container) { if (container === undefined || container === null) { return false; } if (container.__contains__ instanceof Function) { return container.__contains__ (element); } else { return ( container.indexOf ? container.indexOf (element) > -1 : container.hasOwnProperty (element) ); } }; export function __specialattrib__ (attrib) { return (attrib.startswith ('__') && attrib.endswith ('__')) || attrib == 'constructor' || attrib.startswith ('py_'); }; export function len (anObject) { if (anObject === undefined || anObject === null) { return 0; } if (anObject.__len__ instanceof Function) { return anObject.__len__ (); } if (anObject.length !== undefined) { return anObject.length; } var length = 0; for (var attr in anObject) { if (!__specialattrib__ (attr)) { length++; } } return length; }; export function __i__ (any) { return py_typeof (any) == dict ? any.py_keys () : any; } export function __k__ (keyed, key) { var result = keyed [key]; if (typeof result == 'undefined') { if (keyed instanceof Array) if (key == +key && key >= 0 && keyed.length > key) return result; else throw IndexError (key, new Error()); else throw KeyError (key, new Error()); } return result; } export function __t__ (target) { return ( target === undefined || target === null ? false : ['boolean', 'number'] .indexOf (typeof target) >= 0 ? target : target.__bool__ instanceof Function ? (target.__bool__ () ? target : false) : target.__len__ instanceof Function ? (target.__len__ () !== 0 ? target : false) : target instanceof Function ? target : len (target) !== 0 ? target : false ); } export function float (any) { if (any == 'inf') { return Infinity; } else if (any == '-inf') { return -Infinity; } else if (any == 'nan') { return NaN; } else if (isNaN (parseFloat (any))) { if (any === false) { return 0; } else if (any === true) { return 1; } else { throw ValueError ("could not convert string to float: '" + str(any) + "'", new Error ()); } } else { return +any; } }; float.__name__ = 'float'; float.__bases__ = [object]; export function int (any) { return float (any) | 0 }; int.__name__ = 'int'; int.__bases__ = [object]; export function bool (any) { return !!__t__ (any); }; bool.__name__ = 'bool'; bool.__bases__ = [int]; export function py_typeof (anObject) { var aType = typeof anObject; if (aType == 'object') { try { return '__class__' in anObject ? anObject.__class__ : object; } catch (exception) { return aType; } } else { return ( aType == 'boolean' ? bool : aType == 'string' ? str : aType == 'number' ? (anObject % 1 == 0 ? int : float) : null ); } }; export function issubclass (aClass, classinfo) { if (classinfo instanceof Array) { for (let aClass2 of classinfo) { if (issubclass (aClass, aClass2)) { return true; } } return false; } try { var aClass2 = aClass; if (aClass2 == classinfo) { return true; } else { var bases = [].slice.call (aClass2.__bases__); while (bases.length) { aClass2 = bases.shift (); if (aClass2 == classinfo) { return true; } if (aClass2.__bases__.length) { bases = [].slice.call (aClass2.__bases__).concat (bases); } } return false; } } catch (exception) { return aClass == classinfo || classinfo == object; } }; export function isinstance (anObject, classinfo) { try { return '__class__' in anObject ? issubclass (anObject.__class__, classinfo) : issubclass (py_typeof (anObject), classinfo); } catch (exception) { return issubclass (py_typeof (anObject), classinfo); } }; export function callable (anObject) { return anObject && typeof anObject == 'object' && '__call__' in anObject ? true : typeof anObject === 'function'; }; export function repr (anObject) { try { return anObject.__repr__ (); } catch (exception) { try { return anObject.__str__ (); } catch (exception) { try { if (anObject == null) { return 'None'; } else if (anObject.constructor == Object) { var result = '{'; var comma = false; for (var attrib in anObject) { if (!__specialattrib__ (attrib)) { if (attrib.isnumeric ()) { var attribRepr = attrib; } else { var attribRepr = '\'' + attrib + '\''; } if (comma) { result += ', '; } else { comma = true; } result += attribRepr + ': ' + repr (anObject [attrib]); } } result += '}'; return result; } else { return typeof anObject == 'boolean' ? anObject.toString () .capitalize () : anObject.toString (); } } catch (exception) { return ''; } } } }; export function chr (charCode) { return String.fromCharCode (charCode); }; export function ord (aChar) { return aChar.charCodeAt (0); }; export function max (nrOrSeq) { return arguments.length == 1 ? Math.max (...nrOrSeq) : Math.max (...arguments); }; export function min (nrOrSeq) { return arguments.length == 1 ? Math.min (...nrOrSeq) : Math.min (...arguments); }; export var abs = Math.abs; export function round (number, ndigits) { if (ndigits) { var scale = Math.pow (10, ndigits); number *= scale; } var rounded = Math.round (number); if (rounded - number == 0.5 && rounded % 2) { rounded -= 1; } if (ndigits) { rounded /= scale; } return rounded; }; export function __jsUsePyNext__ () { try { var result = this.__next__ (); return {value: result, done: false}; } catch (exception) { return {value: undefined, done: true}; } } export function __pyUseJsNext__ () { var result = this.next (); if (result.done) { throw StopIteration (new Error ()); } else { return result.value; } } export function py_iter (iterable) { if (typeof iterable == 'string' || '__iter__' in iterable) { var result = iterable.__iter__ (); result.next = __jsUsePyNext__; } else if ('selector' in iterable) { var result = list (iterable) .__iter__ (); result.next = __jsUsePyNext__; } else if ('next' in iterable) { var result = iterable if (! ('__next__' in result)) { result.__next__ = __pyUseJsNext__; } } else if (Symbol.iterator in iterable) { var result = iterable [Symbol.iterator] (); result.__next__ = __pyUseJsNext__; } else { throw IterableError (new Error ()); } result [Symbol.iterator] = function () {return result;}; return result; } export function py_next (iterator) { try { var result = iterator.__next__ (); } catch (exception) { var result = iterator.next (); if (result.done) { throw StopIteration (new Error ()); } else { return result.value; } } if (result == undefined) { throw StopIteration (new Error ()); } else { return result; } } export function __PyIterator__ (iterable) { this.iterable = iterable; this.index = 0; } __PyIterator__.prototype.__next__ = function() { if (this.index < this.iterable.length) { return this.iterable [this.index++]; } else { throw StopIteration (new Error ()); } }; export function __JsIterator__ (iterable) { this.iterable = iterable; this.index = 0; } __JsIterator__.prototype.next = function () { if (this.index < this.iterable.py_keys.length) { return {value: this.index++, done: false}; } else { return {value: undefined, done: true}; } }; export function py_reversed (iterable) { iterable = iterable.slice (); iterable.reverse (); return iterable; }; export function zip () { var args = [] .slice.call (arguments); for (var i = 0; i < args.length; i++) { if (typeof args [i] == 'string') { args [i] = args [i] .split (''); } else if (!Array.isArray (args [i])) { args [i] = Array.from (args [i]); } } var shortest = args.length == 0 ? [] : args.reduce ( function (array0, array1) { return array0.length < array1.length ? array0 : array1; } ); return shortest.map ( function (current, index) { return args.map ( function (current) { return current [index]; } ); } ); }; export function range (start, stop, step) { if (stop == undefined) { stop = start; start = 0; } if (step == undefined) { step = 1; } if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) { return []; } var result = []; for (var i = start; step > 0 ? i < stop : i > stop; i += step) { result.push(i); } return result; }; export function any (iterable) { for (let item of iterable) { if (bool (item)) { return true; } } return false; } export function all (iterable) { for (let item of iterable) { if (! bool (item)) { return false; } } return true; } export function sum (iterable) { let result = 0; for (let item of iterable) { result += item; } return result; } export function enumerate (iterable) { return zip (range (len (iterable)), iterable); } export function copy (anObject) { if (anObject == null || typeof anObject == "object") { return anObject; } else { var result = {}; for (var attrib in obj) { if (anObject.hasOwnProperty (attrib)) { result [attrib] = anObject [attrib]; } } return result; } } export function deepcopy (anObject) { if (anObject == null || typeof anObject == "object") { return anObject; } else { var result = {}; for (var attrib in obj) { if (anObject.hasOwnProperty (attrib)) { result [attrib] = deepcopy (anObject [attrib]); } } return result; } } export function list (iterable) { let instance = iterable ? Array.from (iterable) : []; return instance; } Array.prototype.__class__ = list; list.__name__ = 'list'; list.__bases__ = [object]; Array.prototype.__iter__ = function () {return new __PyIterator__ (this);}; Array.prototype.__getslice__ = function (start, stop, step) { if (start < 0) { start = this.length + start; } if (stop == null) { stop = this.length; } else if (stop < 0) { stop = this.length + stop; } else if (stop > this.length) { stop = this.length; } if (step == 1) { return Array.prototype.slice.call(this, start, stop); } let result = list ([]); for (let index = start; index < stop; index += step) { result.push (this [index]); } return result; }; Array.prototype.__setslice__ = function (start, stop, step, source) { if (start < 0) { start = this.length + start; } if (stop == null) { stop = this.length; } else if (stop < 0) { stop = this.length + stop; } if (step == null) { Array.prototype.splice.apply (this, [start, stop - start] .concat (source)); } else { let sourceIndex = 0; for (let targetIndex = start; targetIndex < stop; targetIndex += step) { this [targetIndex] = source [sourceIndex++]; } } }; Array.prototype.__repr__ = function () { if (this.__class__ == set && !this.length) { return 'set()'; } let result = !this.__class__ || this.__class__ == list ? '[' : this.__class__ == tuple ? '(' : '{'; for (let index = 0; index < this.length; index++) { if (index) { result += ', '; } result += repr (this [index]); } if (this.__class__ == tuple && this.length == 1) { result += ','; } result += !this.__class__ || this.__class__ == list ? ']' : this.__class__ == tuple ? ')' : '}';; return result; }; Array.prototype.__str__ = Array.prototype.__repr__; Array.prototype.append = function (element) { this.push (element); }; Array.prototype.py_clear = function () { this.length = 0; }; Array.prototype.extend = function (aList) { this.push.apply (this, aList); }; Array.prototype.insert = function (index, element) { this.splice (index, 0, element); }; Array.prototype.remove = function (element) { let index = this.indexOf (element); if (index == -1) { throw ValueError ("list.remove(x): x not in list", new Error ()); } this.splice (index, 1); }; Array.prototype.index = function (element) { return this.indexOf (element); }; Array.prototype.py_pop = function (index) { if (index == undefined) { return this.pop (); } else { return this.splice (index, 1) [0]; } }; Array.prototype.py_sort = function () { __sort__.apply (null, [this].concat ([] .slice.apply (arguments))); }; Array.prototype.__add__ = function (aList) { return list (this.concat (aList)); }; Array.prototype.__mul__ = function (scalar) { let result = this; for (let i = 1; i < scalar; i++) { result = result.concat (this); } return result; }; Array.prototype.__rmul__ = Array.prototype.__mul__; export function tuple (iterable) { let instance = iterable ? [] .slice.apply (iterable) : []; instance.__class__ = tuple; return instance; } tuple.__name__ = 'tuple'; tuple.__bases__ = [object]; export function set (iterable) { let instance = []; if (iterable) { for (let index = 0; index < iterable.length; index++) { instance.add (iterable [index]); } } instance.__class__ = set; return instance; } set.__name__ = 'set'; set.__bases__ = [object]; Array.prototype.__bindexOf__ = function (element) { element += ''; let mindex = 0; let maxdex = this.length - 1; while (mindex <= maxdex) { let index = (mindex + maxdex) / 2 | 0; let middle = this [index] + ''; if (middle < element) { mindex = index + 1; } else if (middle > element) { maxdex = index - 1; } else { return index; } } return -1; }; Array.prototype.add = function (element) { if (this.indexOf (element) == -1) { this.push (element); } }; Array.prototype.discard = function (element) { var index = this.indexOf (element); if (index != -1) { this.splice (index, 1); } }; Array.prototype.isdisjoint = function (other) { this.sort (); for (let i = 0; i < other.length; i++) { if (this.__bindexOf__ (other [i]) != -1) { return false; } } return true; }; Array.prototype.issuperset = function (other) { this.sort (); for (let i = 0; i < other.length; i++) { if (this.__bindexOf__ (other [i]) == -1) { return false; } } return true; }; Array.prototype.issubset = function (other) { return set (other.slice ()) .issuperset (this); }; Array.prototype.union = function (other) { let result = set (this.slice () .sort ()); for (let i = 0; i < other.length; i++) { if (result.__bindexOf__ (other [i]) == -1) { result.push (other [i]); } } return result; }; Array.prototype.intersection = function (other) { this.sort (); let result = set (); for (let i = 0; i < other.length; i++) { if (this.__bindexOf__ (other [i]) != -1) { result.push (other [i]); } } return result; }; Array.prototype.difference = function (other) { let sother = set (other.slice () .sort ()); let result = set (); for (let i = 0; i < this.length; i++) { if (sother.__bindexOf__ (this [i]) == -1) { result.push (this [i]); } } return result; }; Array.prototype.symmetric_difference = function (other) { return this.union (other) .difference (this.intersection (other)); }; Array.prototype.py_update = function () { let updated = [] .concat.apply (this.slice (), arguments) .sort (); this.py_clear (); for (let i = 0; i < updated.length; i++) { if (updated [i] != updated [i - 1]) { this.push (updated [i]); } } }; Array.prototype.__eq__ = function (other) { if (this.length != other.length) { return false; } if (this.__class__ == set) { this.sort (); other.sort (); } for (let i = 0; i < this.length; i++) { if (this [i] != other [i]) { return false; } } return true; }; Array.prototype.__ne__ = function (other) { return !this.__eq__ (other); }; Array.prototype.__le__ = function (other) { if (this.__class__ == set) { return this.issubset (other); } else { for (let i = 0; i < this.length; i++) { if (this [i] > other [i]) { return false; } else if (this [i] < other [i]) { return true; } } return true; } }; Array.prototype.__ge__ = function (other) { if (this.__class__ == set) { return this.issuperset (other); } else { for (let i = 0; i < this.length; i++) { if (this [i] < other [i]) { return false; } else if (this [i] > other [i]) { return true; } } return true; } }; Array.prototype.__lt__ = function (other) { return ( this.__class__ == set ? this.issubset (other) && !this.issuperset (other) : !this.__ge__ (other) ); }; Array.prototype.__gt__ = function (other) { return ( this.__class__ == set ? this.issuperset (other) && !this.issubset (other) : !this.__le__ (other) ); }; export function bytearray (bytable, encoding) { if (bytable == undefined) { return new Uint8Array (0); } else { let aType = py_typeof (bytable); if (aType == int) { return new Uint8Array (bytable); } else if (aType == str) { let aBytes = new Uint8Array (len (bytable)); for (let i = 0; i < len (bytable); i++) { aBytes [i] = bytable.charCodeAt (i); } return aBytes; } else if (aType == list || aType == tuple) { return new Uint8Array (bytable); } else { throw py_TypeError; } } } export var bytes = bytearray; Uint8Array.prototype.__add__ = function (aBytes) { let result = new Uint8Array (this.length + aBytes.length); result.set (this); result.set (aBytes, this.length); return result; }; Uint8Array.prototype.__mul__ = function (scalar) { let result = new Uint8Array (scalar * this.length); for (let i = 0; i < scalar; i++) { result.set (this, i * this.length); } return result; }; Uint8Array.prototype.__rmul__ = Uint8Array.prototype.__mul__; export function str (stringable) { if (typeof stringable === 'number') return stringable.toString(); else { try { return stringable.__str__ (); } catch (exception) { try { return repr (stringable); } catch (exception) { return String (stringable); } } } }; String.prototype.__class__ = str; str.__name__ = 'str'; str.__bases__ = [object]; String.prototype.__iter__ = function () {new __PyIterator__ (this);}; String.prototype.__repr__ = function () { return (this.indexOf ('\'') == -1 ? '\'' + this + '\'' : '"' + this + '"') .py_replace ('\t', '\\t') .py_replace ('\n', '\\n'); }; String.prototype.__str__ = function () { return this; }; String.prototype.capitalize = function () { return this.charAt (0).toUpperCase () + this.slice (1); }; String.prototype.endswith = function (suffix) { if (suffix instanceof Array) { for (var i=0;i> b; } }; export function __or__ (a, b) { if (typeof a == 'object' && '__or__' in a) { return a.__or__ (b); } else if (typeof b == 'object' && '__ror__' in b) { return b.__ror__ (a); } else { return a | b; } }; export function __xor__ (a, b) { if (typeof a == 'object' && '__xor__' in a) { return a.__xor__ (b); } else if (typeof b == 'object' && '__rxor__' in b) { return b.__rxor__ (a); } else { return a ^ b; } }; export function __and__ (a, b) { if (typeof a == 'object' && '__and__' in a) { return a.__and__ (b); } else if (typeof b == 'object' && '__rand__' in b) { return b.__rand__ (a); } else { return a & b; } }; export function __eq__ (a, b) { if (typeof a == 'object' && '__eq__' in a) { return a.__eq__ (b); } else { return a == b; } }; export function __ne__ (a, b) { if (typeof a == 'object' && '__ne__' in a) { return a.__ne__ (b); } else { return a != b } }; export function __lt__ (a, b) { if (typeof a == 'object' && '__lt__' in a) { return a.__lt__ (b); } else { return a < b; } }; export function __le__ (a, b) { if (typeof a == 'object' && '__le__' in a) { return a.__le__ (b); } else { return a <= b; } }; export function __gt__ (a, b) { if (typeof a == 'object' && '__gt__' in a) { return a.__gt__ (b); } else { return a > b; } }; export function __ge__ (a, b) { if (typeof a == 'object' && '__ge__' in a) { return a.__ge__ (b); } else { return a >= b; } }; export function __imatmul__ (a, b) { if ('__imatmul__' in a) { return a.__imatmul__ (b); } else { return a.__matmul__ (b); } }; export function __ipow__ (a, b) { if (typeof a == 'object' && '__pow__' in a) { return a.__ipow__ (b); } else if (typeof a == 'object' && '__ipow__' in a) { return a.__pow__ (b); } else if (typeof b == 'object' && '__rpow__' in b) { return b.__rpow__ (a); } else { return Math.pow (a, b); } }; export function __ijsmod__ (a, b) { if (typeof a == 'object' && '__imod__' in a) { return a.__ismod__ (b); } else if (typeof a == 'object' && '__mod__' in a) { return a.__mod__ (b); } else if (typeof b == 'object' && '__rpow__' in b) { return b.__rmod__ (a); } else { return a % b; } }; export function __imod__ (a, b) { if (typeof a == 'object' && '__imod__' in a) { return a.__imod__ (b); } else if (typeof a == 'object' && '__mod__' in a) { return a.__mod__ (b); } else if (typeof b == 'object' && '__rmod__' in b) { return b.__rmod__ (a); } else { return ((a % b) + b) % b; } }; export function __imul__ (a, b) { if (typeof a == 'object' && '__imul__' in a) { return a.__imul__ (b); } else if (typeof a == 'object' && '__mul__' in a) { return a = a.__mul__ (b); } else if (typeof b == 'object' && '__rmul__' in b) { return a = b.__rmul__ (a); } else if (typeof a == 'string') { return a = a.__mul__ (b); } else if (typeof b == 'string') { return a = b.__rmul__ (a); } else { return a *= b; } }; export function __idiv__ (a, b) { if (typeof a == 'object' && '__idiv__' in a) { return a.__idiv__ (b); } else if (typeof a == 'object' && '__div__' in a) { return a = a.__div__ (b); } else if (typeof b == 'object' && '__rdiv__' in b) { return a = b.__rdiv__ (a); } else { return a /= b; } }; export function __iadd__ (a, b) { if (typeof a == 'object' && '__iadd__' in a) { return a.__iadd__ (b); } else if (typeof a == 'object' && '__add__' in a) { return a = a.__add__ (b); } else if (typeof b == 'object' && '__radd__' in b) { return a = b.__radd__ (a); } else { return a += b; } }; export function __isub__ (a, b) { if (typeof a == 'object' && '__isub__' in a) { return a.__isub__ (b); } else if (typeof a == 'object' && '__sub__' in a) { return a = a.__sub__ (b); } else if (typeof b == 'object' && '__rsub__' in b) { return a = b.__rsub__ (a); } else { return a -= b; } }; export function __ilshift__ (a, b) { if (typeof a == 'object' && '__ilshift__' in a) { return a.__ilshift__ (b); } else if (typeof a == 'object' && '__lshift__' in a) { return a = a.__lshift__ (b); } else if (typeof b == 'object' && '__rlshift__' in b) { return a = b.__rlshift__ (a); } else { return a <<= b; } }; export function __irshift__ (a, b) { if (typeof a == 'object' && '__irshift__' in a) { return a.__irshift__ (b); } else if (typeof a == 'object' && '__rshift__' in a) { return a = a.__rshift__ (b); } else if (typeof b == 'object' && '__rrshift__' in b) { return a = b.__rrshift__ (a); } else { return a >>= b; } }; export function __ior__ (a, b) { if (typeof a == 'object' && '__ior__' in a) { return a.__ior__ (b); } else if (typeof a == 'object' && '__or__' in a) { return a = a.__or__ (b); } else if (typeof b == 'object' && '__ror__' in b) { return a = b.__ror__ (a); } else { return a |= b; } }; export function __ixor__ (a, b) { if (typeof a == 'object' && '__ixor__' in a) { return a.__ixor__ (b); } else if (typeof a == 'object' && '__xor__' in a) { return a = a.__xor__ (b); } else if (typeof b == 'object' && '__rxor__' in b) { return a = b.__rxor__ (a); } else { return a ^= b; } }; export function __iand__ (a, b) { if (typeof a == 'object' && '__iand__' in a) { return a.__iand__ (b); } else if (typeof a == 'object' && '__and__' in a) { return a = a.__and__ (b); } else if (typeof b == 'object' && '__rand__' in b) { return a = b.__rand__ (a); } else { return a &= b; } }; export function __getitem__ (container, key) { if (typeof container == 'object' && '__getitem__' in container) { return container.__getitem__ (key); } else if ((typeof container == 'string' || container instanceof Array) && key < 0) { return container [container.length + key]; } else { return container [key]; } }; export function __setitem__ (container, key, value) { if (typeof container == 'object' && '__setitem__' in container) { container.__setitem__ (key, value); } else if ((typeof container == 'string' || container instanceof Array) && key < 0) { container [container.length + key] = value; } else { container [key] = value; } }; export function __getslice__ (container, lower, upper, step) { if (typeof container == 'object' && '__getitem__' in container) { return container.__getitem__ ([lower, upper, step]); } else { return container.__getslice__ (lower, upper, step); } }; export function __setslice__ (container, lower, upper, step, value) { if (typeof container == 'object' && '__setitem__' in container) { container.__setitem__ ([lower, upper, step], value); } else { container.__setslice__ (lower, upper, step, value); } }; export var BaseException = __class__ ('BaseException', [object], { __module__: __name__, }); export var Exception = __class__ ('Exception', [BaseException], { __module__: __name__, get __init__ () {return __get__ (this, function (self) { var kwargs = dict (); if (arguments.length) { var __ilastarg0__ = arguments.length - 1; if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { var __allkwargs0__ = arguments [__ilastarg0__--]; for (var __attrib0__ in __allkwargs0__) { switch (__attrib0__) { case 'self': var self = __allkwargs0__ [__attrib0__]; break; default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; } } delete kwargs.__kwargtrans__; } var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); } else { var args = tuple (); } self.__args__ = args; try { self.stack = kwargs.error.stack; } catch (__except0__) { self.stack = 'No stack trace available'; } });}, get __repr__ () {return __get__ (this, function (self) { if (len (self.__args__) > 1) { return '{}{}'.format (self.__class__.__name__, repr (tuple (self.__args__))); } else if (len (self.__args__)) { return '{}({})'.format (self.__class__.__name__, repr (self.__args__ [0])); } else { return '{}()'.format (self.__class__.__name__); } });}, get __str__ () {return __get__ (this, function (self) { if (len (self.__args__) > 1) { return str (tuple (self.__args__)); } else if (len (self.__args__)) { return str (self.__args__ [0]); } else { return ''; } });} }); export var IterableError = __class__ ('IterableError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, error) { Exception.__init__ (self, "Can't iterate over non-iterable", __kwargtrans__ ({error: error})); });} }); export var StopIteration = __class__ ('StopIteration', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, error) { Exception.__init__ (self, 'Iterator exhausted', __kwargtrans__ ({error: error})); });} }); export var ValueError = __class__ ('ValueError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); });} }); export var KeyError = __class__ ('KeyError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); });} }); export var AssertionError = __class__ ('AssertionError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { if (message) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); } else { Exception.__init__ (self, __kwargtrans__ ({error: error})); } });} }); export var NotImplementedError = __class__ ('NotImplementedError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); });} }); export var IndexError = __class__ ('IndexError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); });} }); export var AttributeError = __class__ ('AttributeError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); });} }); export var py_TypeError = __class__ ('py_TypeError', [Exception], { __module__: __name__, get __init__ () {return __get__ (this, function (self, message, error) { Exception.__init__ (self, message, __kwargtrans__ ({error: error})); });} }); export var Warning = __class__ ('Warning', [Exception], { __module__: __name__, }); export var UserWarning = __class__ ('UserWarning', [Warning], { __module__: __name__, }); export var DeprecationWarning = __class__ ('DeprecationWarning', [Warning], { __module__: __name__, }); export var RuntimeWarning = __class__ ('RuntimeWarning', [Warning], { __module__: __name__, }); export var __sort__ = function (iterable, key, reverse) { if (typeof key == 'undefined' || (key != null && key.hasOwnProperty ("__kwargtrans__"))) {; var key = null; }; if (typeof reverse == 'undefined' || (reverse != null && reverse.hasOwnProperty ("__kwargtrans__"))) {; var reverse = false; }; if (arguments.length) { var __ilastarg0__ = arguments.length - 1; if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { var __allkwargs0__ = arguments [__ilastarg0__--]; for (var __attrib0__ in __allkwargs0__) { switch (__attrib0__) { case 'iterable': var iterable = __allkwargs0__ [__attrib0__]; break; case 'key': var key = __allkwargs0__ [__attrib0__]; break; case 'reverse': var reverse = __allkwargs0__ [__attrib0__]; break; } } } } else { } if (key) { iterable.sort ((function __lambda__ (a, b) { if (arguments.length) { var __ilastarg0__ = arguments.length - 1; if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { var __allkwargs0__ = arguments [__ilastarg0__--]; for (var __attrib0__ in __allkwargs0__) { switch (__attrib0__) { case 'a': var a = __allkwargs0__ [__attrib0__]; break; case 'b': var b = __allkwargs0__ [__attrib0__]; break; } } } } else { } return (key (a) > key (b) ? 1 : -(1)); })); } else { iterable.sort (); } if (reverse) { iterable.reverse (); } }; export var sorted = function (iterable, key, reverse) { if (typeof key == 'undefined' || (key != null && key.hasOwnProperty ("__kwargtrans__"))) {; var key = null; }; if (typeof reverse == 'undefined' || (reverse != null && reverse.hasOwnProperty ("__kwargtrans__"))) {; var reverse = false; }; if (arguments.length) { var __ilastarg0__ = arguments.length - 1; if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { var __allkwargs0__ = arguments [__ilastarg0__--]; for (var __attrib0__ in __allkwargs0__) { switch (__attrib0__) { case 'iterable': var iterable = __allkwargs0__ [__attrib0__]; break; case 'key': var key = __allkwargs0__ [__attrib0__]; break; case 'reverse': var reverse = __allkwargs0__ [__attrib0__]; break; } } } } else { } if (py_typeof (iterable) == dict) { var result = copy (iterable.py_keys ()); } else { var result = copy (iterable); } __sort__ (result, key, reverse); return result; }; export var map = function (func, iterable) { return (function () { var __accu0__ = []; for (var item of iterable) { __accu0__.append (func (item)); } return __accu0__; }) (); }; export var filter = function (func, iterable) { if (func == null) { var func = bool; } return (function () { var __accu0__ = []; for (var item of iterable) { if (func (item)) { __accu0__.append (item); } } return __accu0__; }) (); }; export var divmod = function (n, d) { return tuple ([Math.floor (n / d), __mod__ (n, d)]); }; export var __Terminal__ = __class__ ('__Terminal__', [object], { __module__: __name__, get __init__ () {return __get__ (this, function (self) { self.buffer = ''; try { self.element = document.getElementById ('__terminal__'); } catch (__except0__) { self.element = null; } if (self.element) { self.element.style.overflowX = 'auto'; self.element.style.boxSizing = 'border-box'; self.element.style.padding = '5px'; self.element.innerHTML = '_'; } });}, get print () {return __get__ (this, function (self) { var sep = ' '; var end = '\n'; if (arguments.length) { var __ilastarg0__ = arguments.length - 1; if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { var __allkwargs0__ = arguments [__ilastarg0__--]; for (var __attrib0__ in __allkwargs0__) { switch (__attrib0__) { case 'self': var self = __allkwargs0__ [__attrib0__]; break; case 'sep': var sep = __allkwargs0__ [__attrib0__]; break; case 'end': var end = __allkwargs0__ [__attrib0__]; break; } } } var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); } else { var args = tuple (); } self.buffer = '{}{}{}'.format (self.buffer, sep.join ((function () { var __accu0__ = []; for (var arg of args) { __accu0__.append (str (arg)); } return __accu0__; }) ()), end).__getslice__ (-(4096), null, 1); if (self.element) { self.element.innerHTML = self.buffer.py_replace ('\n', '
').py_replace (' ', ' '); self.element.scrollTop = self.element.scrollHeight; } else { console.log (sep.join ((function () { var __accu0__ = []; for (var arg of args) { __accu0__.append (str (arg)); } return __accu0__; }) ())); } });}, get input () {return __get__ (this, function (self, question) { if (arguments.length) { var __ilastarg0__ = arguments.length - 1; if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { var __allkwargs0__ = arguments [__ilastarg0__--]; for (var __attrib0__ in __allkwargs0__) { switch (__attrib0__) { case 'self': var self = __allkwargs0__ [__attrib0__]; break; case 'question': var question = __allkwargs0__ [__attrib0__]; break; } } } } else { } self.print ('{}'.format (question), __kwargtrans__ ({end: ''})); var answer = window.prompt ('\n'.join (self.buffer.py_split ('\n').__getslice__ (-(8), null, 1))); self.print (answer); return answer; });} }); export var __terminal__ = __Terminal__ (); export var print = __terminal__.print; export var input = __terminal__.input; //# sourceMappingURL=org.transcrypt.__runtime__.map