babel-source 5.1.11 → 5.1.12

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.
@@ -73,7 +73,10 @@
73
73
  }
74
74
  }
75
75
 
76
- if (initializers) initializers[key] = descriptor.initializer;
76
+ if (descriptor.initializer) {
77
+ initializers[key] = descriptor;
78
+ continue;
79
+ }
77
80
  }
78
81
 
79
82
  Object.defineProperty(target, key, descriptor);
@@ -98,7 +101,7 @@
98
101
  delete descriptor.decorators;
99
102
  descriptor.enumerable = true;
100
103
  descriptor.configurable = true;
101
- if ("value" in descriptor) descriptor.writable = true;
104
+ descriptor.writable = true;
102
105
 
103
106
  if (decorators) {
104
107
  for (var f = 0; f < decorators.length; f++) {
@@ -112,12 +115,23 @@
112
115
  }
113
116
  }
114
117
 
118
+ descriptor.value = descriptor.initializer();
115
119
  Object.defineProperty(target, key, descriptor);
116
120
  }
117
121
 
118
122
  return target;
119
123
  };
120
124
 
125
+ babelHelpers.defineDecoratedPropertyDescriptor = function (target, key, descriptors) {
126
+ var _descriptor = descriptors[key];
127
+ var descriptor = {};
128
+
129
+ for (var _key in _descriptor) descriptor[_key] = _descriptor[_key];
130
+
131
+ descriptor.value = descriptor.initializer();
132
+ Object.defineProperty(target, key, descriptor);
133
+ };
134
+
121
135
  babelHelpers.taggedTemplateLiteral = function (strings, raw) {
122
136
  return Object.freeze(Object.defineProperties(strings, {
123
137
  raw: {
@@ -131,10 +145,6 @@
131
145
  return strings;
132
146
  };
133
147
 
134
- babelHelpers.interopRequire = function (obj) {
135
- return obj && obj.__esModule ? obj["default"] : obj;
136
- };
137
-
138
148
  babelHelpers.toArray = function (arr) {
139
149
  return Array.isArray(arr) ? arr : Array.from(arr);
140
150
  };
@@ -253,6 +263,23 @@
253
263
  };
254
264
 
255
265
  babelHelpers.interopRequireWildcard = function (obj) {
266
+ if (obj && obj.__esModule) {
267
+ return obj;
268
+ } else {
269
+ var newObj = {};
270
+
271
+ if (typeof obj === "object" && obj !== null) {
272
+ for (var key in obj) {
273
+ if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
274
+ }
275
+ }
276
+
277
+ newObj["default"] = obj;
278
+ return newObj;
279
+ }
280
+ };
281
+
282
+ babelHelpers.interopRequireDefault = function (obj) {
256
283
  return obj && obj.__esModule ? obj : {
257
284
  "default": obj
258
285
  };
@@ -355,4 +382,8 @@
355
382
 
356
383
  return props;
357
384
  };
385
+
386
+ babelHelpers.interopRequire = function (obj) {
387
+ return obj && obj.__esModule ? obj["default"] : obj;
388
+ };
358
389
  })(typeof global === "undefined" ? self : global);
@@ -11,7 +11,18 @@ require("core-js/shim");
11
11
 
12
12
  require("regenerator/runtime");
13
13
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14
- },{"core-js/shim":72,"regenerator/runtime":73}],2:[function(require,module,exports){
14
+ },{"core-js/shim":81,"regenerator/runtime":82}],2:[function(require,module,exports){
15
+ module.exports = function(KEY, TYPE){
16
+ var $def = require('./$.def')
17
+ , $export = {}
18
+ , forced = true;
19
+ // Shouldn't skip holes
20
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
21
+ $export[KEY] = require('./$.array-methods')(TYPE);
22
+ $def($def.P + $def.F * forced, 'Array', $export);
23
+ require('./$.unscope')(KEY);
24
+ };
25
+ },{"./$.array-methods":4,"./$.def":13,"./$.unscope":34}],3:[function(require,module,exports){
15
26
  'use strict';
16
27
  // false -> Array#indexOf
17
28
  // true -> Array#includes
@@ -30,7 +41,7 @@ module.exports = function(IS_INCLUDES){
30
41
  } return !IS_INCLUDES && -1;
31
42
  };
32
43
  };
33
- },{"./$":16}],3:[function(require,module,exports){
44
+ },{"./$":23}],4:[function(require,module,exports){
34
45
  'use strict';
35
46
  // 0 -> Array#forEach
36
47
  // 1 -> Array#map
@@ -72,7 +83,7 @@ module.exports = function(TYPE){
72
83
  return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
73
84
  };
74
85
  };
75
- },{"./$":16,"./$.ctx":10}],4:[function(require,module,exports){
86
+ },{"./$":23,"./$.ctx":12}],5:[function(require,module,exports){
76
87
  var $ = require('./$');
77
88
  function assert(condition, msg1, msg2){
78
89
  if(!condition)throw TypeError(msg2 ? msg1 + msg2 : msg1);
@@ -91,18 +102,19 @@ assert.inst = function(it, Constructor, name){
91
102
  return it;
92
103
  };
93
104
  module.exports = assert;
94
- },{"./$":16}],5:[function(require,module,exports){
95
- var $ = require('./$');
105
+ },{"./$":23}],6:[function(require,module,exports){
106
+ var $ = require('./$')
107
+ , enumKeys = require('./$.enum-keys');
96
108
  // 19.1.2.1 Object.assign(target, source, ...)
97
- /*eslint-disable no-unused-vars */
109
+ /* eslint-disable no-unused-vars */
98
110
  module.exports = Object.assign || function assign(target, source){
99
- /*eslint-enable no-unused-vars */
111
+ /* eslint-enable no-unused-vars */
100
112
  var T = Object($.assertDefined(target))
101
113
  , l = arguments.length
102
114
  , i = 1;
103
115
  while(l > i){
104
116
  var S = $.ES5Object(arguments[i++])
105
- , keys = $.getKeys(S)
117
+ , keys = enumKeys(S)
106
118
  , length = keys.length
107
119
  , j = 0
108
120
  , key;
@@ -110,7 +122,7 @@ module.exports = Object.assign || function assign(target, source){
110
122
  }
111
123
  return T;
112
124
  };
113
- },{"./$":16}],6:[function(require,module,exports){
125
+ },{"./$":23,"./$.enum-keys":15}],7:[function(require,module,exports){
114
126
  var $ = require('./$')
115
127
  , TAG = require('./$.wks')('toStringTag')
116
128
  , toString = {}.toString;
@@ -126,18 +138,18 @@ cof.set = function(it, tag, stat){
126
138
  if(it && !$.has(it = stat ? it : it.prototype, TAG))$.hide(it, TAG, tag);
127
139
  };
128
140
  module.exports = cof;
129
- },{"./$":16,"./$.wks":27}],7:[function(require,module,exports){
141
+ },{"./$":23,"./$.wks":35}],8:[function(require,module,exports){
130
142
  'use strict';
131
143
  var $ = require('./$')
132
144
  , ctx = require('./$.ctx')
133
145
  , safe = require('./$.uid').safe
134
146
  , assert = require('./$.assert')
135
- , $iter = require('./$.iter')
147
+ , forOf = require('./$.for-of')
148
+ , step = require('./$.iter').step
136
149
  , has = $.has
137
150
  , set = $.set
138
151
  , isObject = $.isObject
139
152
  , hide = $.hide
140
- , step = $iter.step
141
153
  , isFrozen = Object.isFrozen || $.core.Object.isFrozen
142
154
  , ID = safe('id')
143
155
  , O1 = safe('O1')
@@ -173,13 +185,14 @@ function getEntry(that, key){
173
185
 
174
186
  module.exports = {
175
187
  getConstructor: function(NAME, IS_MAP, ADDER){
176
- function C(iterable){
177
- var that = assert.inst(this, C, NAME);
188
+ function C(){
189
+ var that = assert.inst(this, C, NAME)
190
+ , iterable = arguments[0];
178
191
  set(that, O1, $.create(null));
179
192
  set(that, SIZE, 0);
180
193
  set(that, LAST, undefined);
181
194
  set(that, FIRST, undefined);
182
- if(iterable != undefined)$iter.forOf(iterable, IS_MAP, that[ADDER], that);
195
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
183
196
  }
184
197
  $.mix(C.prototype, {
185
198
  // 23.1.3.1 Map.prototype.clear()
@@ -258,35 +271,49 @@ module.exports = {
258
271
  } return that;
259
272
  },
260
273
  getEntry: getEntry,
261
- getIterConstructor: function(){
262
- return function(iterated, kind){
274
+ // add .keys, .values, .entries, [@@iterator]
275
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
276
+ setIter: function(C, NAME, IS_MAP){
277
+ require('./$.iter-define')(C, NAME, function(iterated, kind){
263
278
  set(this, ITER, {o: iterated, k: kind});
264
- };
265
- },
266
- next: function(){
267
- var iter = this[ITER]
268
- , kind = iter.k
269
- , entry = iter.l;
270
- // revert to the last existing entry
271
- while(entry && entry.r)entry = entry.p;
272
- // get next entry
273
- if(!iter.o || !(iter.l = entry = entry ? entry.n : iter.o[FIRST])){
274
- // or finish the iteration
275
- iter.o = undefined;
276
- return step(1);
277
- }
278
- // return step by kind
279
- if(kind == 'key' )return step(0, entry.k);
280
- if(kind == 'value')return step(0, entry.v);
281
- return step(0, [entry.k, entry.v]);
279
+ }, function(){
280
+ var iter = this[ITER]
281
+ , kind = iter.k
282
+ , entry = iter.l;
283
+ // revert to the last existing entry
284
+ while(entry && entry.r)entry = entry.p;
285
+ // get next entry
286
+ if(!iter.o || !(iter.l = entry = entry ? entry.n : iter.o[FIRST])){
287
+ // or finish the iteration
288
+ iter.o = undefined;
289
+ return step(1);
290
+ }
291
+ // return step by kind
292
+ if(kind == 'keys' )return step(0, entry.k);
293
+ if(kind == 'values')return step(0, entry.v);
294
+ return step(0, [entry.k, entry.v]);
295
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
282
296
  }
283
297
  };
284
- },{"./$":16,"./$.assert":4,"./$.ctx":10,"./$.iter":15,"./$.uid":25}],8:[function(require,module,exports){
298
+ },{"./$":23,"./$.assert":5,"./$.ctx":12,"./$.for-of":16,"./$.iter":22,"./$.iter-define":20,"./$.uid":33}],9:[function(require,module,exports){
299
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
300
+ var $def = require('./$.def')
301
+ , forOf = require('./$.for-of');
302
+ module.exports = function(NAME){
303
+ $def($def.P, NAME, {
304
+ toJSON: function toJSON(){
305
+ var arr = [];
306
+ forOf(this, false, arr.push, arr);
307
+ return arr;
308
+ }
309
+ });
310
+ };
311
+ },{"./$.def":13,"./$.for-of":16}],10:[function(require,module,exports){
285
312
  'use strict';
286
313
  var $ = require('./$')
287
314
  , safe = require('./$.uid').safe
288
315
  , assert = require('./$.assert')
289
- , forOf = require('./$.iter').forOf
316
+ , forOf = require('./$.for-of')
290
317
  , _has = $.has
291
318
  , isObject = $.isObject
292
319
  , hide = $.hide
@@ -331,8 +358,9 @@ function leakStore(that){
331
358
 
332
359
  module.exports = {
333
360
  getConstructor: function(NAME, IS_MAP, ADDER){
334
- function C(iterable){
361
+ function C(){
335
362
  $.set(assert.inst(this, C, NAME), ID, id++);
363
+ var iterable = arguments[0];
336
364
  if(iterable != undefined)forOf(iterable, IS_MAP, this[ADDER], this);
337
365
  }
338
366
  $.mix(C.prototype, {
@@ -365,14 +393,16 @@ module.exports = {
365
393
  WEAK: WEAK,
366
394
  ID: ID
367
395
  };
368
- },{"./$":16,"./$.array-methods":3,"./$.assert":4,"./$.iter":15,"./$.uid":25}],9:[function(require,module,exports){
396
+ },{"./$":23,"./$.array-methods":4,"./$.assert":5,"./$.for-of":16,"./$.uid":33}],11:[function(require,module,exports){
369
397
  'use strict';
370
398
  var $ = require('./$')
371
399
  , $def = require('./$.def')
372
- , $iter = require('./$.iter')
400
+ , BUGGY = require('./$.iter').BUGGY
401
+ , forOf = require('./$.for-of')
402
+ , species = require('./$.species')
373
403
  , assertInstance = require('./$.assert').inst;
374
404
 
375
- module.exports = function(NAME, methods, common, IS_MAP, isWeak){
405
+ module.exports = function(NAME, methods, common, IS_MAP, IS_WEAK){
376
406
  var Base = $.g[NAME]
377
407
  , C = Base
378
408
  , ADDER = IS_MAP ? 'set' : 'add'
@@ -385,26 +415,27 @@ module.exports = function(NAME, methods, common, IS_MAP, isWeak){
385
415
  return CHAIN ? this : result;
386
416
  };
387
417
  }
388
- if(!$.isFunction(C) || !(isWeak || !$iter.BUGGY && proto.forEach && proto.entries)){
418
+ if(!$.isFunction(C) || !(IS_WEAK || !BUGGY && proto.forEach && proto.entries)){
389
419
  // create collection constructor
390
420
  C = common.getConstructor(NAME, IS_MAP, ADDER);
391
421
  $.mix(C.prototype, methods);
392
422
  } else {
393
423
  var inst = new C
394
- , chain = inst[ADDER](isWeak ? {} : -0, 1)
424
+ , chain = inst[ADDER](IS_WEAK ? {} : -0, 1)
395
425
  , buggyZero;
396
426
  // wrap for init collections from iterable
397
427
  if(!require('./$.iter-detect')(function(iter){ new C(iter); })){ // eslint-disable-line no-new
398
- C = function(iterable){
428
+ C = function(){
399
429
  assertInstance(this, C, NAME);
400
- var that = new Base;
401
- if(iterable != undefined)$iter.forOf(iterable, IS_MAP, that[ADDER], that);
430
+ var that = new Base
431
+ , iterable = arguments[0];
432
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
402
433
  return that;
403
434
  };
404
435
  C.prototype = proto;
405
436
  if($.FW)proto.constructor = C;
406
437
  }
407
- isWeak || inst.forEach(function(val, key){
438
+ IS_WEAK || inst.forEach(function(val, key){
408
439
  buggyZero = 1 / key === -Infinity;
409
440
  });
410
441
  // fix converting -0 key to +0
@@ -418,22 +449,17 @@ module.exports = function(NAME, methods, common, IS_MAP, isWeak){
418
449
  }
419
450
 
420
451
  require('./$.cof').set(C, NAME);
421
- require('./$.species')(C);
422
452
 
423
453
  O[NAME] = C;
424
454
  $def($def.G + $def.W + $def.F * (C != Base), O);
455
+ species(C);
456
+ species($.core[NAME]); // for wrapper
425
457
 
426
- // add .keys, .values, .entries, [@@iterator]
427
- // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
428
- if(!isWeak)$iter.std(
429
- C, NAME,
430
- common.getIterConstructor(), common.next,
431
- IS_MAP ? 'key+value' : 'value' , !IS_MAP, true
432
- );
458
+ if(!IS_WEAK)common.setIter(C, NAME, IS_MAP);
433
459
 
434
460
  return C;
435
461
  };
436
- },{"./$":16,"./$.assert":4,"./$.cof":6,"./$.def":11,"./$.iter":15,"./$.iter-detect":14,"./$.species":22}],10:[function(require,module,exports){
462
+ },{"./$":23,"./$.assert":5,"./$.cof":7,"./$.def":13,"./$.for-of":16,"./$.iter":22,"./$.iter-detect":21,"./$.species":29}],12:[function(require,module,exports){
437
463
  // Optional / simple context binding
438
464
  var assertFunction = require('./$.assert').fn;
439
465
  module.exports = function(fn, that, length){
@@ -453,7 +479,7 @@ module.exports = function(fn, that, length){
453
479
  return fn.apply(that, arguments);
454
480
  };
455
481
  };
456
- },{"./$.assert":4}],11:[function(require,module,exports){
482
+ },{"./$.assert":5}],13:[function(require,module,exports){
457
483
  var $ = require('./$')
458
484
  , global = $.g
459
485
  , core = $.core
@@ -496,13 +522,47 @@ function $def(type, name, source){
496
522
  }
497
523
  }
498
524
  module.exports = $def;
499
- },{"./$":16}],12:[function(require,module,exports){
525
+ },{"./$":23}],14:[function(require,module,exports){
526
+ var $ = require('./$')
527
+ , document = $.g.document
528
+ , isObject = $.isObject
529
+ // in old IE typeof document.createElement is 'object'
530
+ , is = isObject(document) && isObject(document.createElement);
531
+ module.exports = function(it){
532
+ return is ? document.createElement(it) : {};
533
+ };
534
+ },{"./$":23}],15:[function(require,module,exports){
535
+ var $ = require('./$');
536
+ module.exports = function(it){
537
+ var keys = $.getKeys(it)
538
+ , getDesc = $.getDesc
539
+ , getSymbols = $.getSymbols;
540
+ if(getSymbols)$.each.call(getSymbols(it), function(key){
541
+ if(getDesc(it, key).enumerable)keys.push(key);
542
+ });
543
+ return keys;
544
+ };
545
+ },{"./$":23}],16:[function(require,module,exports){
546
+ var ctx = require('./$.ctx')
547
+ , get = require('./$.iter').get
548
+ , call = require('./$.iter-call');
549
+ module.exports = function(iterable, entries, fn, that){
550
+ var iterator = get(iterable)
551
+ , f = ctx(fn, that, entries ? 2 : 1)
552
+ , step;
553
+ while(!(step = iterator.next()).done){
554
+ if(call(iterator, f, step.value, entries) === false){
555
+ return call.close(iterator);
556
+ }
557
+ }
558
+ };
559
+ },{"./$.ctx":12,"./$.iter":22,"./$.iter-call":19}],17:[function(require,module,exports){
500
560
  module.exports = function($){
501
561
  $.FW = true;
502
562
  $.path = $.g;
503
563
  return $;
504
564
  };
505
- },{}],13:[function(require,module,exports){
565
+ },{}],18:[function(require,module,exports){
506
566
  // Fast apply
507
567
  // http://jsperf.lnkit.com/fast-apply/5
508
568
  module.exports = function(fn, args, that){
@@ -522,7 +582,68 @@ module.exports = function(fn, args, that){
522
582
  : fn.call(that, args[0], args[1], args[2], args[3], args[4]);
523
583
  } return fn.apply(that, args);
524
584
  };
525
- },{}],14:[function(require,module,exports){
585
+ },{}],19:[function(require,module,exports){
586
+ var assertObject = require('./$.assert').obj;
587
+ function close(iterator){
588
+ var ret = iterator['return'];
589
+ if(ret !== undefined)assertObject(ret.call(iterator));
590
+ }
591
+ function call(iterator, fn, value, entries){
592
+ try {
593
+ return entries ? fn(assertObject(value)[0], value[1]) : fn(value);
594
+ } catch(e){
595
+ close(iterator);
596
+ throw e;
597
+ }
598
+ }
599
+ call.close = close;
600
+ module.exports = call;
601
+ },{"./$.assert":5}],20:[function(require,module,exports){
602
+ var $def = require('./$.def')
603
+ , $ = require('./$')
604
+ , cof = require('./$.cof')
605
+ , $iter = require('./$.iter')
606
+ , SYMBOL_ITERATOR = require('./$.wks')('iterator')
607
+ , FF_ITERATOR = '@@iterator'
608
+ , VALUES = 'values'
609
+ , Iterators = $iter.Iterators;
610
+ module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCE){
611
+ $iter.create(Constructor, NAME, next);
612
+ function createMethod(kind){
613
+ return function(){
614
+ return new Constructor(this, kind);
615
+ };
616
+ }
617
+ var TAG = NAME + ' Iterator'
618
+ , proto = Base.prototype
619
+ , _native = proto[SYMBOL_ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
620
+ , _default = _native || createMethod(DEFAULT)
621
+ , methods, key;
622
+ // Fix native
623
+ if(_native){
624
+ var IteratorPrototype = $.getProto(_default.call(new Base));
625
+ // Set @@toStringTag to native iterators
626
+ cof.set(IteratorPrototype, TAG, true);
627
+ // FF fix
628
+ if($.FW && $.has(proto, FF_ITERATOR))$iter.set(IteratorPrototype, $.that);
629
+ }
630
+ // Define iterator
631
+ if($.FW)$iter.set(proto, _default);
632
+ // Plug for library
633
+ Iterators[NAME] = _default;
634
+ Iterators[TAG] = $.that;
635
+ if(DEFAULT){
636
+ methods = {
637
+ keys: IS_SET ? _default : createMethod('keys'),
638
+ values: DEFAULT == VALUES ? _default : createMethod(VALUES),
639
+ entries: DEFAULT != VALUES ? _default : createMethod('entries')
640
+ };
641
+ if(FORCE)for(key in methods){
642
+ if(!(key in proto))$.hide(proto, key, methods[key]);
643
+ } else $def($def.P + $def.F * $iter.BUGGY, NAME, methods);
644
+ }
645
+ };
646
+ },{"./$":23,"./$.cof":7,"./$.def":13,"./$.iter":22,"./$.wks":35}],21:[function(require,module,exports){
526
647
  var SYMBOL_ITERATOR = require('./$.wks')('iterator')
527
648
  , SAFE_CLOSING = false;
528
649
  try {
@@ -542,19 +663,15 @@ module.exports = function(exec){
542
663
  } catch(e){ /* empty */ }
543
664
  return safe;
544
665
  };
545
- },{"./$.wks":27}],15:[function(require,module,exports){
666
+ },{"./$.wks":35}],22:[function(require,module,exports){
546
667
  'use strict';
547
668
  var $ = require('./$')
548
- , ctx = require('./$.ctx')
549
669
  , cof = require('./$.cof')
550
- , $def = require('./$.def')
551
670
  , assertObject = require('./$.assert').obj
552
671
  , SYMBOL_ITERATOR = require('./$.wks')('iterator')
553
672
  , FF_ITERATOR = '@@iterator'
554
673
  , Iterators = {}
555
674
  , IteratorPrototype = {};
556
- // Safari has byggy iterators w/o `next`
557
- var BUGGY = 'keys' in [] && !('next' in [].keys());
558
675
  // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
559
676
  setIterator(IteratorPrototype, $.that);
560
677
  function setIterator(O, value){
@@ -562,101 +679,33 @@ function setIterator(O, value){
562
679
  // Add iterator for FF iterator protocol
563
680
  if(FF_ITERATOR in [])$.hide(O, FF_ITERATOR, value);
564
681
  }
565
- function defineIterator(Constructor, NAME, value, DEFAULT){
566
- var proto = Constructor.prototype
567
- , iter = proto[SYMBOL_ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] || value;
568
- // Define iterator
569
- if($.FW)setIterator(proto, iter);
570
- if(iter !== value){
571
- var iterProto = $.getProto(iter.call(new Constructor));
572
- // Set @@toStringTag to native iterators
573
- cof.set(iterProto, NAME + ' Iterator', true);
574
- // FF fix
575
- if($.FW)$.has(proto, FF_ITERATOR) && setIterator(iterProto, $.that);
576
- }
577
- // Plug for library
578
- Iterators[NAME] = iter;
579
- // FF & v8 fix
580
- Iterators[NAME + ' Iterator'] = $.that;
581
- return iter;
582
- }
583
- function getIterator(it){
584
- var Symbol = $.g.Symbol
585
- , ext = it[Symbol && Symbol.iterator || FF_ITERATOR]
586
- , getIter = ext || it[SYMBOL_ITERATOR] || Iterators[cof.classof(it)];
587
- return assertObject(getIter.call(it));
588
- }
589
- function closeIterator(iterator){
590
- var ret = iterator['return'];
591
- if(ret !== undefined)assertObject(ret.call(iterator));
592
- }
593
- function stepCall(iterator, fn, value, entries){
594
- try {
595
- return entries ? fn(assertObject(value)[0], value[1]) : fn(value);
596
- } catch(e){
597
- closeIterator(iterator);
598
- throw e;
599
- }
600
- }
601
- var $iter = module.exports = {
602
- BUGGY: BUGGY,
682
+
683
+ module.exports = {
684
+ // Safari has buggy iterators w/o `next`
685
+ BUGGY: 'keys' in [] && !('next' in [].keys()),
603
686
  Iterators: Iterators,
604
- prototype: IteratorPrototype,
605
687
  step: function(done, value){
606
688
  return {value: value, done: !!done};
607
689
  },
608
- stepCall: stepCall,
609
- close: closeIterator,
610
690
  is: function(it){
611
691
  var O = Object(it)
612
692
  , Symbol = $.g.Symbol
613
693
  , SYM = Symbol && Symbol.iterator || FF_ITERATOR;
614
694
  return SYM in O || SYMBOL_ITERATOR in O || $.has(Iterators, cof.classof(O));
615
695
  },
616
- get: getIterator,
696
+ get: function(it){
697
+ var Symbol = $.g.Symbol
698
+ , ext = it[Symbol && Symbol.iterator || FF_ITERATOR]
699
+ , getIter = ext || it[SYMBOL_ITERATOR] || Iterators[cof.classof(it)];
700
+ return assertObject(getIter.call(it));
701
+ },
617
702
  set: setIterator,
618
703
  create: function(Constructor, NAME, next, proto){
619
- Constructor.prototype = $.create(proto || $iter.prototype, {next: $.desc(1, next)});
704
+ Constructor.prototype = $.create(proto || IteratorPrototype, {next: $.desc(1, next)});
620
705
  cof.set(Constructor, NAME + ' Iterator');
621
- },
622
- define: defineIterator,
623
- std: function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCE){
624
- function createIter(kind){
625
- return function(){
626
- return new Constructor(this, kind);
627
- };
628
- }
629
- $iter.create(Constructor, NAME, next);
630
- var entries = createIter('key+value')
631
- , values = createIter('value')
632
- , proto = Base.prototype
633
- , methods, key;
634
- if(DEFAULT == 'value')values = defineIterator(Base, NAME, values, 'values');
635
- else entries = defineIterator(Base, NAME, entries, 'entries');
636
- if(DEFAULT){
637
- methods = {
638
- entries: entries,
639
- keys: IS_SET ? values : createIter('key'),
640
- values: values
641
- };
642
- $def($def.P + $def.F * BUGGY, NAME, methods);
643
- if(FORCE)for(key in methods){
644
- if(!(key in proto))$.hide(proto, key, methods[key]);
645
- }
646
- }
647
- },
648
- forOf: function(iterable, entries, fn, that){
649
- var iterator = getIterator(iterable)
650
- , f = ctx(fn, that, entries ? 2 : 1)
651
- , step;
652
- while(!(step = iterator.next()).done){
653
- if(stepCall(iterator, f, step.value, entries) === false){
654
- return closeIterator(iterator);
655
- }
656
- }
657
706
  }
658
707
  };
659
- },{"./$":16,"./$.assert":4,"./$.cof":6,"./$.ctx":10,"./$.def":11,"./$.wks":27}],16:[function(require,module,exports){
708
+ },{"./$":23,"./$.assert":5,"./$.cof":7,"./$.wks":35}],23:[function(require,module,exports){
660
709
  'use strict';
661
710
  var global = typeof self != 'undefined' ? self : Function('return this')()
662
711
  , core = {}
@@ -691,7 +740,7 @@ function simpleSet(object, key, value){
691
740
  }
692
741
  function createDefiner(bitmap){
693
742
  return DESC ? function(object, key, value){
694
- return $.setDesc(object, key, desc(bitmap, value)); // eslint-disable-line no-use-before-define
743
+ return $.setDesc(object, key, desc(bitmap, value));
695
744
  } : simpleSet;
696
745
  }
697
746
 
@@ -738,11 +787,12 @@ var $ = module.exports = require('./$.fw')({
738
787
  desc: desc,
739
788
  getDesc: Object.getOwnPropertyDescriptor,
740
789
  setDesc: defineProperty,
790
+ setDescs: Object.defineProperties,
741
791
  getKeys: Object.keys,
742
792
  getNames: Object.getOwnPropertyNames,
743
793
  getSymbols: Object.getOwnPropertySymbols,
744
- // Dummy, fix for not array-like ES3 string in es5 module
745
794
  assertDefined: assertDefined,
795
+ // Dummy, fix for not array-like ES3 string in es5 module
746
796
  ES5Object: Object,
747
797
  toObject: function(it){
748
798
  return $.ES5Object(assertDefined(it));
@@ -756,9 +806,10 @@ var $ = module.exports = require('./$.fw')({
756
806
  },
757
807
  each: [].forEach
758
808
  });
809
+ /* eslint-disable no-undef */
759
810
  if(typeof __e != 'undefined')__e = core;
760
811
  if(typeof __g != 'undefined')__g = global;
761
- },{"./$.fw":12}],17:[function(require,module,exports){
812
+ },{"./$.fw":17}],24:[function(require,module,exports){
762
813
  var $ = require('./$');
763
814
  module.exports = function(object, el){
764
815
  var O = $.toObject(object)
@@ -768,14 +819,16 @@ module.exports = function(object, el){
768
819
  , key;
769
820
  while(length > index)if(O[key = keys[index++]] === el)return key;
770
821
  };
771
- },{"./$":16}],18:[function(require,module,exports){
822
+ },{"./$":23}],25:[function(require,module,exports){
772
823
  var $ = require('./$')
773
824
  , assertObject = require('./$.assert').obj;
774
825
  module.exports = function ownKeys(it){
775
826
  assertObject(it);
776
- return $.getSymbols ? $.getNames(it).concat($.getSymbols(it)) : $.getNames(it);
827
+ var keys = $.getNames(it)
828
+ , getSymbols = $.getSymbols;
829
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
777
830
  };
778
- },{"./$":16,"./$.assert":4}],19:[function(require,module,exports){
831
+ },{"./$":23,"./$.assert":5}],26:[function(require,module,exports){
779
832
  'use strict';
780
833
  var $ = require('./$')
781
834
  , invoke = require('./$.invoke')
@@ -799,7 +852,7 @@ module.exports = function(/* ...pargs */){
799
852
  return invoke(fn, args, that);
800
853
  };
801
854
  };
802
- },{"./$":16,"./$.assert":4,"./$.invoke":13}],20:[function(require,module,exports){
855
+ },{"./$":23,"./$.assert":5,"./$.invoke":18}],27:[function(require,module,exports){
803
856
  'use strict';
804
857
  module.exports = function(regExp, replace, isStatic){
805
858
  var replacer = replace === Object(replace) ? function(part){
@@ -809,9 +862,9 @@ module.exports = function(regExp, replace, isStatic){
809
862
  return String(isStatic ? it : this).replace(regExp, replacer);
810
863
  };
811
864
  };
812
- },{}],21:[function(require,module,exports){
865
+ },{}],28:[function(require,module,exports){
813
866
  // Works with __proto__ only. Old v8 can't work with null proto objects.
814
- /*eslint-disable no-proto */
867
+ /* eslint-disable no-proto */
815
868
  var $ = require('./$')
816
869
  , assert = require('./$.assert');
817
870
  function check(O, proto){
@@ -835,15 +888,16 @@ module.exports = {
835
888
  : undefined),
836
889
  check: check
837
890
  };
838
- },{"./$":16,"./$.assert":4,"./$.ctx":10}],22:[function(require,module,exports){
839
- var $ = require('./$');
891
+ },{"./$":23,"./$.assert":5,"./$.ctx":12}],29:[function(require,module,exports){
892
+ var $ = require('./$')
893
+ , SPECIES = require('./$.wks')('species');
840
894
  module.exports = function(C){
841
- if($.DESC && $.FW)$.setDesc(C, require('./$.wks')('species'), {
895
+ if($.DESC && !(SPECIES in C))$.setDesc(C, SPECIES, {
842
896
  configurable: true,
843
897
  get: $.that
844
898
  });
845
899
  };
846
- },{"./$":16,"./$.wks":27}],23:[function(require,module,exports){
900
+ },{"./$":23,"./$.wks":35}],30:[function(require,module,exports){
847
901
  'use strict';
848
902
  // true -> String#at
849
903
  // false -> String#codePointAt
@@ -862,16 +916,16 @@ module.exports = function(TO_STRING){
862
916
  : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
863
917
  };
864
918
  };
865
- },{"./$":16}],24:[function(require,module,exports){
919
+ },{"./$":23}],31:[function(require,module,exports){
866
920
  'use strict';
867
921
  var $ = require('./$')
868
922
  , ctx = require('./$.ctx')
869
923
  , cof = require('./$.cof')
870
924
  , invoke = require('./$.invoke')
925
+ , cel = require('./$.dom-create')
871
926
  , global = $.g
872
927
  , isFunction = $.isFunction
873
928
  , html = $.html
874
- , document = global.document
875
929
  , process = global.process
876
930
  , setTask = global.setImmediate
877
931
  , clearTask = global.clearImmediate
@@ -926,9 +980,9 @@ if(!isFunction(setTask) || !isFunction(clearTask)){
926
980
  channel.port1.onmessage = listner;
927
981
  defer = ctx(port.postMessage, port, 1);
928
982
  // IE8-
929
- } else if(document && ONREADYSTATECHANGE in document.createElement('script')){
983
+ } else if(ONREADYSTATECHANGE in cel('script')){
930
984
  defer = function(id){
931
- html.appendChild(document.createElement('script'))[ONREADYSTATECHANGE] = function(){
985
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
932
986
  html.removeChild(this);
933
987
  run.call(id);
934
988
  };
@@ -944,14 +998,23 @@ module.exports = {
944
998
  set: setTask,
945
999
  clear: clearTask
946
1000
  };
947
- },{"./$":16,"./$.cof":6,"./$.ctx":10,"./$.invoke":13}],25:[function(require,module,exports){
1001
+ },{"./$":23,"./$.cof":7,"./$.ctx":12,"./$.dom-create":14,"./$.invoke":18}],32:[function(require,module,exports){
1002
+ module.exports = function(exec){
1003
+ try {
1004
+ exec();
1005
+ return false;
1006
+ } catch(e){
1007
+ return true;
1008
+ }
1009
+ };
1010
+ },{}],33:[function(require,module,exports){
948
1011
  var sid = 0;
949
1012
  function uid(key){
950
1013
  return 'Symbol(' + key + ')_' + (++sid + Math.random()).toString(36);
951
1014
  }
952
1015
  uid.safe = require('./$').g.Symbol || uid;
953
1016
  module.exports = uid;
954
- },{"./$":16}],26:[function(require,module,exports){
1017
+ },{"./$":23}],34:[function(require,module,exports){
955
1018
  // 22.1.3.31 Array.prototype[@@unscopables]
956
1019
  var $ = require('./$')
957
1020
  , UNSCOPABLES = require('./$.wks')('unscopables');
@@ -959,15 +1022,16 @@ if($.FW && !(UNSCOPABLES in []))$.hide(Array.prototype, UNSCOPABLES, {});
959
1022
  module.exports = function(key){
960
1023
  if($.FW)[][UNSCOPABLES][key] = true;
961
1024
  };
962
- },{"./$":16,"./$.wks":27}],27:[function(require,module,exports){
1025
+ },{"./$":23,"./$.wks":35}],35:[function(require,module,exports){
963
1026
  var global = require('./$').g
964
1027
  , store = {};
965
1028
  module.exports = function(name){
966
1029
  return store[name] || (store[name] =
967
1030
  global.Symbol && global.Symbol[name] || require('./$.uid').safe('Symbol.' + name));
968
1031
  };
969
- },{"./$":16,"./$.uid":25}],28:[function(require,module,exports){
1032
+ },{"./$":23,"./$.uid":33}],36:[function(require,module,exports){
970
1033
  var $ = require('./$')
1034
+ , cel = require('./$.dom-create')
971
1035
  , cof = require('./$.cof')
972
1036
  , $def = require('./$.def')
973
1037
  , invoke = require('./$.invoke')
@@ -980,10 +1044,10 @@ var $ = require('./$')
980
1044
  , slice = A.slice
981
1045
  , indexOf = A.indexOf
982
1046
  , classof = cof.classof
983
- , defineProperties = Object.defineProperties
984
1047
  , has = $.has
985
1048
  , defineProperty = $.setDesc
986
1049
  , getOwnDescriptor = $.getDesc
1050
+ , defineProperties = $.setDescs
987
1051
  , isFunction = $.isFunction
988
1052
  , toObject = $.toObject
989
1053
  , toLength = $.toLength
@@ -991,7 +1055,7 @@ var $ = require('./$')
991
1055
 
992
1056
  if(!$.DESC){
993
1057
  try {
994
- IE8_DOM_DEFINE = defineProperty(document.createElement('div'), 'x',
1058
+ IE8_DOM_DEFINE = defineProperty(cel('div'), 'x',
995
1059
  {get: function(){ return 8; }}
996
1060
  ).x == 8;
997
1061
  } catch(e){ /* empty */ }
@@ -1009,7 +1073,7 @@ if(!$.DESC){
1009
1073
  } catch(e){ /* empty */ }
1010
1074
  if(has(O, P))return $.desc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]);
1011
1075
  };
1012
- defineProperties = function(O, Properties){
1076
+ $.setDescs = defineProperties = function(O, Properties){
1013
1077
  assertObject(O);
1014
1078
  var keys = $.getKeys(Properties)
1015
1079
  , length = keys.length
@@ -1038,7 +1102,7 @@ var keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' +
1038
1102
  // Create object with `null` prototype: use iframe Object with cleared prototype
1039
1103
  var createDict = function(){
1040
1104
  // Thrash, waste and sodomy: IE GC bug
1041
- var iframe = document.createElement('iframe')
1105
+ var iframe = cel('iframe')
1042
1106
  , i = keysLen1
1043
1107
  , gt = '>'
1044
1108
  , iframeDocument;
@@ -1208,8 +1272,12 @@ $def($def.S, 'Date', {now: function(){
1208
1272
  function lz(num){
1209
1273
  return num > 9 ? num : '0' + num;
1210
1274
  }
1275
+
1211
1276
  // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
1212
- $def($def.P, 'Date', {toISOString: function(){
1277
+ // PhantomJS and old webkit had a broken Date implementation.
1278
+ var date = new Date(-5e13 - 1)
1279
+ , brokenDate = !(date.toISOString && date.toISOString() == '0385-07-25T07:06:39.999Z');
1280
+ $def($def.P + $def.F * brokenDate, 'Date', {toISOString: function(){
1213
1281
  if(!isFinite(this))throw RangeError('Invalid time value');
1214
1282
  var d = this
1215
1283
  , y = d.getUTCFullYear()
@@ -1225,7 +1293,7 @@ if(classof(function(){ return arguments; }()) == 'Object')cof.classof = function
1225
1293
  var tag = classof(it);
1226
1294
  return tag == 'Object' && isFunction(it.callee) ? 'Arguments' : tag;
1227
1295
  };
1228
- },{"./$":16,"./$.array-includes":2,"./$.array-methods":3,"./$.assert":4,"./$.cof":6,"./$.def":11,"./$.invoke":13,"./$.replacer":20,"./$.uid":25}],29:[function(require,module,exports){
1296
+ },{"./$":23,"./$.array-includes":3,"./$.array-methods":4,"./$.assert":5,"./$.cof":7,"./$.def":13,"./$.dom-create":14,"./$.invoke":18,"./$.replacer":27,"./$.uid":33}],37:[function(require,module,exports){
1229
1297
  'use strict';
1230
1298
  var $ = require('./$')
1231
1299
  , $def = require('./$.def')
@@ -1255,7 +1323,7 @@ $def($def.P, 'Array', {
1255
1323
  }
1256
1324
  });
1257
1325
  require('./$.unscope')('copyWithin');
1258
- },{"./$":16,"./$.def":11,"./$.unscope":26}],30:[function(require,module,exports){
1326
+ },{"./$":23,"./$.def":13,"./$.unscope":34}],38:[function(require,module,exports){
1259
1327
  'use strict';
1260
1328
  var $ = require('./$')
1261
1329
  , $def = require('./$.def')
@@ -1273,26 +1341,18 @@ $def($def.P, 'Array', {
1273
1341
  }
1274
1342
  });
1275
1343
  require('./$.unscope')('fill');
1276
- },{"./$":16,"./$.def":11,"./$.unscope":26}],31:[function(require,module,exports){
1277
- var $def = require('./$.def');
1278
- $def($def.P, 'Array', {
1279
- // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
1280
- findIndex: require('./$.array-methods')(6)
1281
- });
1282
- require('./$.unscope')('findIndex');
1283
- },{"./$.array-methods":3,"./$.def":11,"./$.unscope":26}],32:[function(require,module,exports){
1284
- var $def = require('./$.def');
1285
- $def($def.P, 'Array', {
1286
- // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
1287
- find: require('./$.array-methods')(5)
1288
- });
1289
- require('./$.unscope')('find');
1290
- },{"./$.array-methods":3,"./$.def":11,"./$.unscope":26}],33:[function(require,module,exports){
1344
+ },{"./$":23,"./$.def":13,"./$.unscope":34}],39:[function(require,module,exports){
1345
+ // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
1346
+ require('./$.array-find')('findIndex', 6);
1347
+ },{"./$.array-find":2}],40:[function(require,module,exports){
1348
+ // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
1349
+ require('./$.array-find')('find', 5);
1350
+ },{"./$.array-find":2}],41:[function(require,module,exports){
1291
1351
  var $ = require('./$')
1292
1352
  , ctx = require('./$.ctx')
1293
1353
  , $def = require('./$.def')
1294
1354
  , $iter = require('./$.iter')
1295
- , stepCall = $iter.stepCall;
1355
+ , call = require('./$.iter-call');
1296
1356
  $def($def.S + $def.F * !require('./$.iter-detect')(function(iter){ Array.from(iter); }), 'Array', {
1297
1357
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
1298
1358
  from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
@@ -1307,7 +1367,7 @@ $def($def.S + $def.F * !require('./$.iter-detect')(function(iter){ Array.from(it
1307
1367
  // strange IE quirks mode bug -> use typeof instead of isFunction
1308
1368
  result = new (typeof this == 'function' ? this : Array);
1309
1369
  for(; !(step = iterator.next()).done; index++){
1310
- result[index] = mapping ? stepCall(iterator, f, [step.value, index], true) : step.value;
1370
+ result[index] = mapping ? call(iterator, f, [step.value, index], true) : step.value;
1311
1371
  }
1312
1372
  } else {
1313
1373
  // strange IE quirks mode bug -> use typeof instead of isFunction
@@ -1320,7 +1380,7 @@ $def($def.S + $def.F * !require('./$.iter-detect')(function(iter){ Array.from(it
1320
1380
  return result;
1321
1381
  }
1322
1382
  });
1323
- },{"./$":16,"./$.ctx":10,"./$.def":11,"./$.iter":15,"./$.iter-detect":14}],34:[function(require,module,exports){
1383
+ },{"./$":23,"./$.ctx":12,"./$.def":13,"./$.iter":22,"./$.iter-call":19,"./$.iter-detect":21}],42:[function(require,module,exports){
1324
1384
  var $ = require('./$')
1325
1385
  , setUnscope = require('./$.unscope')
1326
1386
  , ITER = require('./$.uid').safe('iter')
@@ -1332,7 +1392,7 @@ var $ = require('./$')
1332
1392
  // 22.1.3.13 Array.prototype.keys()
1333
1393
  // 22.1.3.29 Array.prototype.values()
1334
1394
  // 22.1.3.30 Array.prototype[@@iterator]()
1335
- $iter.std(Array, 'Array', function(iterated, kind){
1395
+ require('./$.iter-define')(Array, 'Array', function(iterated, kind){
1336
1396
  $.set(this, ITER, {o: $.toObject(iterated), i: 0, k: kind});
1337
1397
  // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
1338
1398
  }, function(){
@@ -1344,10 +1404,10 @@ $iter.std(Array, 'Array', function(iterated, kind){
1344
1404
  iter.o = undefined;
1345
1405
  return step(1);
1346
1406
  }
1347
- if(kind == 'key' )return step(0, index);
1348
- if(kind == 'value')return step(0, O[index]);
1407
+ if(kind == 'keys' )return step(0, index);
1408
+ if(kind == 'values')return step(0, O[index]);
1349
1409
  return step(0, [index, O[index]]);
1350
- }, 'value');
1410
+ }, 'values');
1351
1411
 
1352
1412
  // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
1353
1413
  Iterators.Arguments = Iterators.Array;
@@ -1355,7 +1415,7 @@ Iterators.Arguments = Iterators.Array;
1355
1415
  setUnscope('keys');
1356
1416
  setUnscope('values');
1357
1417
  setUnscope('entries');
1358
- },{"./$":16,"./$.iter":15,"./$.uid":25,"./$.unscope":26}],35:[function(require,module,exports){
1418
+ },{"./$":23,"./$.iter":22,"./$.iter-define":20,"./$.uid":33,"./$.unscope":34}],43:[function(require,module,exports){
1359
1419
  var $def = require('./$.def');
1360
1420
  $def($def.S, 'Array', {
1361
1421
  // 22.1.2.3 Array.of( ...items)
@@ -1369,9 +1429,9 @@ $def($def.S, 'Array', {
1369
1429
  return result;
1370
1430
  }
1371
1431
  });
1372
- },{"./$.def":11}],36:[function(require,module,exports){
1432
+ },{"./$.def":13}],44:[function(require,module,exports){
1373
1433
  require('./$.species')(Array);
1374
- },{"./$.species":22}],37:[function(require,module,exports){
1434
+ },{"./$.species":29}],45:[function(require,module,exports){
1375
1435
  'use strict';
1376
1436
  var $ = require('./$')
1377
1437
  , NAME = 'name'
@@ -1390,7 +1450,7 @@ NAME in FunctionProto || $.FW && $.DESC && setDesc(FunctionProto, NAME, {
1390
1450
  $.has(this, NAME) || setDesc(this, NAME, $.desc(0, value));
1391
1451
  }
1392
1452
  });
1393
- },{"./$":16}],38:[function(require,module,exports){
1453
+ },{"./$":23}],46:[function(require,module,exports){
1394
1454
  'use strict';
1395
1455
  var strong = require('./$.collection-strong');
1396
1456
 
@@ -1406,7 +1466,7 @@ require('./$.collection')('Map', {
1406
1466
  return strong.def(this, key === 0 ? 0 : key, value);
1407
1467
  }
1408
1468
  }, strong, true);
1409
- },{"./$.collection":9,"./$.collection-strong":7}],39:[function(require,module,exports){
1469
+ },{"./$.collection":11,"./$.collection-strong":8}],47:[function(require,module,exports){
1410
1470
  var Infinity = 1 / 0
1411
1471
  , $def = require('./$.def')
1412
1472
  , E = Math.E
@@ -1529,7 +1589,7 @@ $def($def.S, 'Math', {
1529
1589
  return (it > 0 ? floor : ceil)(it);
1530
1590
  }
1531
1591
  });
1532
- },{"./$.def":11}],40:[function(require,module,exports){
1592
+ },{"./$.def":13}],48:[function(require,module,exports){
1533
1593
  'use strict';
1534
1594
  var $ = require('./$')
1535
1595
  , isObject = $.isObject
@@ -1574,7 +1634,7 @@ if($.FW && !(Number('0o1') && Number('0b1'))){
1574
1634
  proto.constructor = Number;
1575
1635
  $.hide($.g, NUMBER, Number);
1576
1636
  }
1577
- },{"./$":16}],41:[function(require,module,exports){
1637
+ },{"./$":23}],49:[function(require,module,exports){
1578
1638
  var $ = require('./$')
1579
1639
  , $def = require('./$.def')
1580
1640
  , abs = Math.abs
@@ -1610,11 +1670,11 @@ $def($def.S, 'Number', {
1610
1670
  // 20.1.2.13 Number.parseInt(string, radix)
1611
1671
  parseInt: parseInt
1612
1672
  });
1613
- },{"./$":16,"./$.def":11}],42:[function(require,module,exports){
1673
+ },{"./$":23,"./$.def":13}],50:[function(require,module,exports){
1614
1674
  // 19.1.3.1 Object.assign(target, source)
1615
1675
  var $def = require('./$.def');
1616
1676
  $def($def.S, 'Object', {assign: require('./$.assign')});
1617
- },{"./$.assign":5,"./$.def":11}],43:[function(require,module,exports){
1677
+ },{"./$.assign":6,"./$.def":13}],51:[function(require,module,exports){
1618
1678
  // 19.1.3.10 Object.is(value1, value2)
1619
1679
  var $def = require('./$.def');
1620
1680
  $def($def.S, 'Object', {
@@ -1622,11 +1682,11 @@ $def($def.S, 'Object', {
1622
1682
  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
1623
1683
  }
1624
1684
  });
1625
- },{"./$.def":11}],44:[function(require,module,exports){
1685
+ },{"./$.def":13}],52:[function(require,module,exports){
1626
1686
  // 19.1.3.19 Object.setPrototypeOf(O, proto)
1627
1687
  var $def = require('./$.def');
1628
1688
  $def($def.S, 'Object', {setPrototypeOf: require('./$.set-proto').set});
1629
- },{"./$.def":11,"./$.set-proto":21}],45:[function(require,module,exports){
1689
+ },{"./$.def":13,"./$.set-proto":28}],53:[function(require,module,exports){
1630
1690
  var $ = require('./$')
1631
1691
  , $def = require('./$.def')
1632
1692
  , isObject = $.isObject
@@ -1665,7 +1725,7 @@ wrapObjectMethod('getOwnPropertyDescriptor', 4);
1665
1725
  wrapObjectMethod('getPrototypeOf', 5);
1666
1726
  wrapObjectMethod('keys');
1667
1727
  wrapObjectMethod('getOwnPropertyNames');
1668
- },{"./$":16,"./$.def":11}],46:[function(require,module,exports){
1728
+ },{"./$":23,"./$.def":13}],54:[function(require,module,exports){
1669
1729
  'use strict';
1670
1730
  // 19.1.3.6 Object.prototype.toString()
1671
1731
  var $ = require('./$')
@@ -1675,28 +1735,46 @@ tmp[require('./$.wks')('toStringTag')] = 'z';
1675
1735
  if($.FW && cof(tmp) != 'z')$.hide(Object.prototype, 'toString', function toString(){
1676
1736
  return '[object ' + cof.classof(this) + ']';
1677
1737
  });
1678
- },{"./$":16,"./$.cof":6,"./$.wks":27}],47:[function(require,module,exports){
1738
+ },{"./$":23,"./$.cof":7,"./$.wks":35}],55:[function(require,module,exports){
1679
1739
  'use strict';
1680
- var $ = require('./$')
1681
- , ctx = require('./$.ctx')
1682
- , cof = require('./$.cof')
1683
- , $def = require('./$.def')
1684
- , assert = require('./$.assert')
1685
- , $iter = require('./$.iter')
1686
- , SPECIES = require('./$.wks')('species')
1687
- , RECORD = require('./$.uid').safe('record')
1688
- , forOf = $iter.forOf
1689
- , PROMISE = 'Promise'
1690
- , global = $.g
1691
- , process = global.process
1692
- , asap = process && process.nextTick || require('./$.task').set
1693
- , P = global[PROMISE]
1694
- , Base = P
1740
+ var $ = require('./$')
1741
+ , ctx = require('./$.ctx')
1742
+ , cof = require('./$.cof')
1743
+ , $def = require('./$.def')
1744
+ , assert = require('./$.assert')
1745
+ , forOf = require('./$.for-of')
1746
+ , setProto = require('./$.set-proto').set
1747
+ , species = require('./$.species')
1748
+ , SPECIES = require('./$.wks')('species')
1749
+ , RECORD = require('./$.uid').safe('record')
1750
+ , PROMISE = 'Promise'
1751
+ , global = $.g
1752
+ , process = global.process
1753
+ , asap = process && process.nextTick || require('./$.task').set
1754
+ , P = global[PROMISE]
1695
1755
  , isFunction = $.isFunction
1696
1756
  , isObject = $.isObject
1697
1757
  , assertFunction = assert.fn
1698
- , assertObject = assert.obj
1699
- , test;
1758
+ , assertObject = assert.obj;
1759
+
1760
+ var useNative = function(){
1761
+ var test, works = false;
1762
+ function P2(x){
1763
+ var self = new P(x);
1764
+ setProto(self, P2.prototype);
1765
+ return self;
1766
+ }
1767
+ try {
1768
+ works = isFunction(P) && isFunction(P.resolve) && P.resolve(test = new P(function(){})) == test;
1769
+ setProto(P2, P);
1770
+ P2.prototype = $.create(P.prototype, {constructor: {value: P2}});
1771
+ // actual Firefox has broken subclass support, test that
1772
+ if(!(P2.resolve(5).then(function(){}) instanceof P2)){
1773
+ works = false;
1774
+ }
1775
+ } catch(e){ works = false; }
1776
+ return works;
1777
+ }();
1700
1778
 
1701
1779
  // helpers
1702
1780
  function getConstructor(C){
@@ -1708,35 +1786,13 @@ function isThenable(it){
1708
1786
  if(isObject(it))then = it.then;
1709
1787
  return isFunction(then) ? then : false;
1710
1788
  }
1711
- function isUnhandled(promise){
1712
- var record = promise[RECORD]
1713
- , chain = record.c
1714
- , i = 0
1715
- , react;
1716
- if(record.h)return false;
1717
- while(chain.length > i){
1718
- react = chain[i++];
1719
- if(react.fail || !isUnhandled(react.P))return false;
1720
- } return true;
1721
- }
1722
- function notify(record, isReject){
1789
+ function notify(record){
1723
1790
  var chain = record.c;
1724
- if(isReject || chain.length)asap(function(){
1725
- var promise = record.p
1726
- , value = record.v
1727
- , ok = record.s == 1
1728
- , i = 0;
1729
- if(isReject && isUnhandled(promise)){
1730
- setTimeout(function(){
1731
- if(isUnhandled(promise)){
1732
- if(cof(process) == 'process'){
1733
- process.emit('unhandledRejection', value, promise);
1734
- } else if(global.console && isFunction(console.error)){
1735
- console.error('Unhandled promise rejection', value);
1736
- }
1737
- }
1738
- }, 1e3);
1739
- } else while(chain.length > i)!function(react){
1791
+ if(chain.length)asap(function(){
1792
+ var value = record.v
1793
+ , ok = record.s == 1
1794
+ , i = 0;
1795
+ function run(react){
1740
1796
  var cb = ok ? react.ok : react.fail
1741
1797
  , ret, then;
1742
1798
  try {
@@ -1744,7 +1800,7 @@ function notify(record, isReject){
1744
1800
  if(!ok)record.h = true;
1745
1801
  ret = cb === true ? value : cb(value);
1746
1802
  if(ret === react.P){
1747
- react.rej(TypeError(PROMISE + '-chain cycle'));
1803
+ react.rej(TypeError('Promise-chain cycle'));
1748
1804
  } else if(then = isThenable(ret)){
1749
1805
  then.call(ret, react.res, react.rej);
1750
1806
  } else react.res(ret);
@@ -1752,18 +1808,44 @@ function notify(record, isReject){
1752
1808
  } catch(err){
1753
1809
  react.rej(err);
1754
1810
  }
1755
- }(chain[i++]);
1811
+ }
1812
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
1756
1813
  chain.length = 0;
1757
1814
  });
1758
1815
  }
1816
+ function isUnhandled(promise){
1817
+ var record = promise[RECORD]
1818
+ , chain = record.a || record.c
1819
+ , i = 0
1820
+ , react;
1821
+ if(record.h)return false;
1822
+ while(chain.length > i){
1823
+ react = chain[i++];
1824
+ if(react.fail || !isUnhandled(react.P))return false;
1825
+ } return true;
1826
+ }
1759
1827
  function $reject(value){
1760
- var record = this;
1828
+ var record = this
1829
+ , promise;
1761
1830
  if(record.d)return;
1762
1831
  record.d = true;
1763
1832
  record = record.r || record; // unwrap
1764
1833
  record.v = value;
1765
1834
  record.s = 2;
1766
- notify(record, true);
1835
+ record.a = record.c.slice();
1836
+ setTimeout(function(){
1837
+ asap(function(){
1838
+ if(isUnhandled(promise = record.p)){
1839
+ if(cof(process) == 'process'){
1840
+ process.emit('unhandledRejection', value, promise);
1841
+ } else if(global.console && isFunction(console.error)){
1842
+ console.error('Unhandled promise rejection', value);
1843
+ }
1844
+ }
1845
+ record.a = undefined;
1846
+ });
1847
+ }, 1);
1848
+ notify(record);
1767
1849
  }
1768
1850
  function $resolve(value){
1769
1851
  var record = this
@@ -1786,13 +1868,14 @@ function $resolve(value){
1786
1868
  }
1787
1869
 
1788
1870
  // constructor polyfill
1789
- if(!(isFunction(P) && isFunction(P.resolve) && P.resolve(test = new P(function(){})) == test)){
1871
+ if(!useNative){
1790
1872
  // 25.4.3.1 Promise(executor)
1791
1873
  P = function Promise(executor){
1792
1874
  assertFunction(executor);
1793
1875
  var record = {
1794
1876
  p: assert.inst(this, P, PROMISE), // <- promise
1795
- c: [], // <- chain
1877
+ c: [], // <- awaiting reactions
1878
+ a: undefined, // <- checked in isUnhandled reactions
1796
1879
  s: 0, // <- state
1797
1880
  d: false, // <- done
1798
1881
  v: undefined, // <- value
@@ -1819,6 +1902,7 @@ if(!(isFunction(P) && isFunction(P.resolve) && P.resolve(test = new P(function()
1819
1902
  });
1820
1903
  var record = this[RECORD];
1821
1904
  record.c.push(react);
1905
+ if(record.a)record.a.push(react);
1822
1906
  record.s && notify(record);
1823
1907
  return promise;
1824
1908
  },
@@ -1830,12 +1914,13 @@ if(!(isFunction(P) && isFunction(P.resolve) && P.resolve(test = new P(function()
1830
1914
  }
1831
1915
 
1832
1916
  // export
1833
- $def($def.G + $def.W + $def.F * (P != Base), {Promise: P});
1917
+ $def($def.G + $def.W + $def.F * !useNative, {Promise: P});
1834
1918
  cof.set(P, PROMISE);
1835
- require('./$.species')(P);
1919
+ species(P);
1920
+ species($.core[PROMISE]); // for wrapper
1836
1921
 
1837
1922
  // statics
1838
- $def($def.S, PROMISE, {
1923
+ $def($def.S + $def.F * !useNative, PROMISE, {
1839
1924
  // 25.4.4.5 Promise.reject(r)
1840
1925
  reject: function reject(r){
1841
1926
  return new (getConstructor(this))(function(res, rej){
@@ -1850,9 +1935,9 @@ $def($def.S, PROMISE, {
1850
1935
  });
1851
1936
  }
1852
1937
  });
1853
- $def($def.S + $def.F * !require('./$.iter-detect')(function(iter){
1938
+ $def($def.S + $def.F * !(useNative && require('./$.iter-detect')(function(iter){
1854
1939
  P.all(iter)['catch'](function(){});
1855
- }), PROMISE, {
1940
+ })), PROMISE, {
1856
1941
  // 25.4.4.1 Promise.all(iterable)
1857
1942
  all: function all(iterable){
1858
1943
  var C = getConstructor(this)
@@ -1880,7 +1965,7 @@ $def($def.S + $def.F * !require('./$.iter-detect')(function(iter){
1880
1965
  });
1881
1966
  }
1882
1967
  });
1883
- },{"./$":16,"./$.assert":4,"./$.cof":6,"./$.ctx":10,"./$.def":11,"./$.iter":15,"./$.iter-detect":14,"./$.species":22,"./$.task":24,"./$.uid":25,"./$.wks":27}],48:[function(require,module,exports){
1968
+ },{"./$":23,"./$.assert":5,"./$.cof":7,"./$.ctx":12,"./$.def":13,"./$.for-of":16,"./$.iter-detect":21,"./$.set-proto":28,"./$.species":29,"./$.task":31,"./$.uid":33,"./$.wks":35}],56:[function(require,module,exports){
1884
1969
  var $ = require('./$')
1885
1970
  , $def = require('./$.def')
1886
1971
  , setProto = require('./$.set-proto')
@@ -1896,14 +1981,16 @@ var $ = require('./$')
1896
1981
  , assertObject = assert.obj
1897
1982
  , _isExtensible = Object.isExtensible || $.it;
1898
1983
  function Enumerate(iterated){
1899
- var keys = [], key;
1900
- for(key in iterated)keys.push(key);
1901
- $.set(this, ITER, {o: iterated, a: keys, i: 0});
1984
+ $.set(this, ITER, {o: iterated, k: undefined, i: 0});
1902
1985
  }
1903
1986
  $iter.create(Enumerate, 'Object', function(){
1904
1987
  var iter = this[ITER]
1905
- , keys = iter.a
1988
+ , keys = iter.k
1906
1989
  , key;
1990
+ if(keys == undefined){
1991
+ iter.k = keys = [];
1992
+ for(key in iter.o)keys.push(key);
1993
+ }
1907
1994
  do {
1908
1995
  if(iter.i >= keys.length)return step(1);
1909
1996
  } while(!((key = keys[iter.i++]) in iter.o));
@@ -2013,18 +2100,28 @@ if(setProto)reflect.setPrototypeOf = function setPrototypeOf(target, proto){
2013
2100
 
2014
2101
  $def($def.G, {Reflect: {}});
2015
2102
  $def($def.S, 'Reflect', reflect);
2016
- },{"./$":16,"./$.assert":4,"./$.ctx":10,"./$.def":11,"./$.iter":15,"./$.own-keys":18,"./$.set-proto":21,"./$.uid":25}],49:[function(require,module,exports){
2103
+ },{"./$":23,"./$.assert":5,"./$.ctx":12,"./$.def":13,"./$.iter":22,"./$.own-keys":25,"./$.set-proto":28,"./$.uid":33}],57:[function(require,module,exports){
2017
2104
  var $ = require('./$')
2018
2105
  , cof = require('./$.cof')
2019
2106
  , RegExp = $.g.RegExp
2020
2107
  , Base = RegExp
2021
2108
  , proto = RegExp.prototype;
2109
+ function regExpBroken() {
2110
+ try {
2111
+ var a = /a/g;
2112
+ // "new" creates a new object
2113
+ if (a === new RegExp(a)) { return true; }
2114
+ // RegExp allows a regex with flags as the pattern
2115
+ return RegExp(/a/g, 'i') != '/a/i';
2116
+ } catch(e) {
2117
+ return true;
2118
+ }
2119
+ }
2022
2120
  if($.FW && $.DESC){
2023
- // RegExp allows a regex with flags as the pattern
2024
- if(!function(){try{ return RegExp(/a/g, 'i') == '/a/i'; }catch(e){ /* empty */ }}()){
2121
+ if(regExpBroken()) {
2025
2122
  RegExp = function RegExp(pattern, flags){
2026
- return new Base(cof(pattern) == 'RegExp' && flags !== undefined
2027
- ? pattern.source : pattern, flags);
2123
+ return new Base(cof(pattern) == 'RegExp' ? pattern.source : pattern,
2124
+ flags === undefined ? pattern.flags : flags);
2028
2125
  };
2029
2126
  $.each.call($.getNames(Base), function(key){
2030
2127
  key in RegExp || $.setDesc(RegExp, key, {
@@ -2044,7 +2141,7 @@ if($.FW && $.DESC){
2044
2141
  });
2045
2142
  }
2046
2143
  require('./$.species')(RegExp);
2047
- },{"./$":16,"./$.cof":6,"./$.replacer":20,"./$.species":22}],50:[function(require,module,exports){
2144
+ },{"./$":23,"./$.cof":7,"./$.replacer":27,"./$.species":29}],58:[function(require,module,exports){
2048
2145
  'use strict';
2049
2146
  var strong = require('./$.collection-strong');
2050
2147
 
@@ -2055,20 +2152,21 @@ require('./$.collection')('Set', {
2055
2152
  return strong.def(this, value = value === 0 ? 0 : value, value);
2056
2153
  }
2057
2154
  }, strong);
2058
- },{"./$.collection":9,"./$.collection-strong":7}],51:[function(require,module,exports){
2155
+ },{"./$.collection":11,"./$.collection-strong":8}],59:[function(require,module,exports){
2059
2156
  var $def = require('./$.def');
2060
2157
  $def($def.P, 'String', {
2061
2158
  // 21.1.3.3 String.prototype.codePointAt(pos)
2062
2159
  codePointAt: require('./$.string-at')(false)
2063
2160
  });
2064
- },{"./$.def":11,"./$.string-at":23}],52:[function(require,module,exports){
2161
+ },{"./$.def":13,"./$.string-at":30}],60:[function(require,module,exports){
2065
2162
  'use strict';
2066
2163
  var $ = require('./$')
2067
2164
  , cof = require('./$.cof')
2068
2165
  , $def = require('./$.def')
2069
2166
  , toLength = $.toLength;
2070
2167
 
2071
- $def($def.P, 'String', {
2168
+ // should throw error on regex
2169
+ $def($def.P + $def.F * !require('./$.throws')(function(){ 'q'.endsWith(/./); }), 'String', {
2072
2170
  // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
2073
2171
  endsWith: function endsWith(searchString /*, endPosition = @length */){
2074
2172
  if(cof(searchString) == 'RegExp')throw TypeError();
@@ -2080,7 +2178,7 @@ $def($def.P, 'String', {
2080
2178
  return that.slice(end - searchString.length, end) === searchString;
2081
2179
  }
2082
2180
  });
2083
- },{"./$":16,"./$.cof":6,"./$.def":11}],53:[function(require,module,exports){
2181
+ },{"./$":23,"./$.cof":7,"./$.def":13,"./$.throws":32}],61:[function(require,module,exports){
2084
2182
  var $def = require('./$.def')
2085
2183
  , toIndex = require('./$').toIndex
2086
2184
  , fromCharCode = String.fromCharCode;
@@ -2102,7 +2200,7 @@ $def($def.S, 'String', {
2102
2200
  } return res.join('');
2103
2201
  }
2104
2202
  });
2105
- },{"./$":16,"./$.def":11}],54:[function(require,module,exports){
2203
+ },{"./$":23,"./$.def":13}],62:[function(require,module,exports){
2106
2204
  'use strict';
2107
2205
  var $ = require('./$')
2108
2206
  , cof = require('./$.cof')
@@ -2115,7 +2213,7 @@ $def($def.P, 'String', {
2115
2213
  return !!~String($.assertDefined(this)).indexOf(searchString, arguments[1]);
2116
2214
  }
2117
2215
  });
2118
- },{"./$":16,"./$.cof":6,"./$.def":11}],55:[function(require,module,exports){
2216
+ },{"./$":23,"./$.cof":7,"./$.def":13}],63:[function(require,module,exports){
2119
2217
  var set = require('./$').set
2120
2218
  , at = require('./$.string-at')(true)
2121
2219
  , ITER = require('./$.uid').safe('iter')
@@ -2123,7 +2221,7 @@ var set = require('./$').set
2123
2221
  , step = $iter.step;
2124
2222
 
2125
2223
  // 21.1.3.27 String.prototype[@@iterator]()
2126
- $iter.std(String, 'String', function(iterated){
2224
+ require('./$.iter-define')(String, 'String', function(iterated){
2127
2225
  set(this, ITER, {o: String(iterated), i: 0});
2128
2226
  // 21.1.5.2.1 %StringIteratorPrototype%.next()
2129
2227
  }, function(){
@@ -2136,7 +2234,7 @@ $iter.std(String, 'String', function(iterated){
2136
2234
  iter.i += point.length;
2137
2235
  return step(0, point);
2138
2236
  });
2139
- },{"./$":16,"./$.iter":15,"./$.string-at":23,"./$.uid":25}],56:[function(require,module,exports){
2237
+ },{"./$":23,"./$.iter":22,"./$.iter-define":20,"./$.string-at":30,"./$.uid":33}],64:[function(require,module,exports){
2140
2238
  var $ = require('./$')
2141
2239
  , $def = require('./$.def');
2142
2240
 
@@ -2154,7 +2252,7 @@ $def($def.S, 'String', {
2154
2252
  } return res.join('');
2155
2253
  }
2156
2254
  });
2157
- },{"./$":16,"./$.def":11}],57:[function(require,module,exports){
2255
+ },{"./$":23,"./$.def":13}],65:[function(require,module,exports){
2158
2256
  'use strict';
2159
2257
  var $ = require('./$')
2160
2258
  , $def = require('./$.def');
@@ -2170,13 +2268,14 @@ $def($def.P, 'String', {
2170
2268
  return res;
2171
2269
  }
2172
2270
  });
2173
- },{"./$":16,"./$.def":11}],58:[function(require,module,exports){
2271
+ },{"./$":23,"./$.def":13}],66:[function(require,module,exports){
2174
2272
  'use strict';
2175
2273
  var $ = require('./$')
2176
2274
  , cof = require('./$.cof')
2177
2275
  , $def = require('./$.def');
2178
2276
 
2179
- $def($def.P, 'String', {
2277
+ // should throw error on regex
2278
+ $def($def.P + $def.F * !require('./$.throws')(function(){ 'q'.startsWith(/./); }), 'String', {
2180
2279
  // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
2181
2280
  startsWith: function startsWith(searchString /*, position = 0 */){
2182
2281
  if(cof(searchString) == 'RegExp')throw TypeError();
@@ -2186,7 +2285,7 @@ $def($def.P, 'String', {
2186
2285
  return that.slice(index, index + searchString.length) === searchString;
2187
2286
  }
2188
2287
  });
2189
- },{"./$":16,"./$.cof":6,"./$.def":11}],59:[function(require,module,exports){
2288
+ },{"./$":23,"./$.cof":7,"./$.def":13,"./$.throws":32}],67:[function(require,module,exports){
2190
2289
  'use strict';
2191
2290
  // ECMAScript 6 symbols shim
2192
2291
  var $ = require('./$')
@@ -2194,39 +2293,97 @@ var $ = require('./$')
2194
2293
  , uid = require('./$.uid')
2195
2294
  , $def = require('./$.def')
2196
2295
  , keyOf = require('./$.keyof')
2296
+ , enumKeys = require('./$.enum-keys')
2297
+ , assertObject = require('./$.assert').obj
2197
2298
  , has = $.has
2198
- , hide = $.hide
2299
+ , $create = $.create
2300
+ , getDesc = $.getDesc
2301
+ , setDesc = $.setDesc
2302
+ , desc = $.desc
2199
2303
  , getNames = $.getNames
2200
2304
  , toObject = $.toObject
2201
2305
  , Symbol = $.g.Symbol
2202
- , Base = Symbol
2203
2306
  , setter = false
2204
- , TAG = uid.safe('tag')
2307
+ , TAG = uid('tag')
2308
+ , HIDDEN = uid('hidden')
2205
2309
  , SymbolRegistry = {}
2206
- , AllSymbols = {};
2310
+ , AllSymbols = {}
2311
+ , useNative = $.isFunction(Symbol);
2207
2312
 
2208
2313
  function wrap(tag){
2209
- var sym = AllSymbols[tag] = $.set($.create(Symbol.prototype), TAG, tag);
2210
- $.DESC && setter && $.setDesc(Object.prototype, tag, {
2314
+ var sym = AllSymbols[tag] = $.set($create(Symbol.prototype), TAG, tag);
2315
+ $.DESC && setter && setDesc(Object.prototype, tag, {
2211
2316
  configurable: true,
2212
2317
  set: function(value){
2213
- hide(this, tag, value);
2318
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
2319
+ setDesc(this, tag, desc(1, value));
2214
2320
  }
2215
2321
  });
2216
2322
  return sym;
2217
2323
  }
2218
2324
 
2325
+ function defineProperty(it, key, D){
2326
+ if(D && has(AllSymbols, key)){
2327
+ if(!D.enumerable){
2328
+ if(!has(it, HIDDEN))setDesc(it, HIDDEN, desc(1, {}));
2329
+ it[HIDDEN][key] = true;
2330
+ } else {
2331
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
2332
+ D.enumerable = false;
2333
+ }
2334
+ } return setDesc(it, key, D);
2335
+ }
2336
+ function defineProperties(it, P){
2337
+ assertObject(it);
2338
+ var keys = enumKeys(P = toObject(P))
2339
+ , i = 0
2340
+ , l = keys.length
2341
+ , key;
2342
+ while(l > i)defineProperty(it, key = keys[i++], P[key]);
2343
+ return it;
2344
+ }
2345
+ function create(it, P){
2346
+ return P === undefined ? $create(it) : defineProperties($create(it), P);
2347
+ }
2348
+ function getOwnPropertyDescriptor(it, key){
2349
+ var D = getDesc(it = toObject(it), key);
2350
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
2351
+ return D;
2352
+ }
2353
+ function getOwnPropertyNames(it){
2354
+ var names = getNames(toObject(it))
2355
+ , result = []
2356
+ , i = 0
2357
+ , key;
2358
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key);
2359
+ return result;
2360
+ }
2361
+ function getOwnPropertySymbols(it){
2362
+ var names = getNames(toObject(it))
2363
+ , result = []
2364
+ , i = 0
2365
+ , key;
2366
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
2367
+ return result;
2368
+ }
2369
+
2219
2370
  // 19.4.1.1 Symbol([description])
2220
- if(!$.isFunction(Symbol)){
2371
+ if(!useNative){
2221
2372
  Symbol = function Symbol(description){
2222
2373
  if(this instanceof Symbol)throw TypeError('Symbol is not a constructor');
2223
2374
  return wrap(uid(description));
2224
2375
  };
2225
- hide(Symbol.prototype, 'toString', function(){
2376
+ $.hide(Symbol.prototype, 'toString', function(){
2226
2377
  return this[TAG];
2227
2378
  });
2379
+
2380
+ $.create = create;
2381
+ $.setDesc = defineProperty;
2382
+ $.getDesc = getOwnPropertyDescriptor;
2383
+ $.setDescs = defineProperties;
2384
+ $.getNames = getOwnPropertyNames;
2385
+ $.getSymbols = getOwnPropertySymbols;
2228
2386
  }
2229
- $def($def.G + $def.W, {Symbol: Symbol});
2230
2387
 
2231
2388
  var symbolStatics = {
2232
2389
  // 19.4.2.1 Symbol.for(key)
@@ -2239,8 +2396,6 @@ var symbolStatics = {
2239
2396
  keyFor: function keyFor(key){
2240
2397
  return keyOf(SymbolRegistry, key);
2241
2398
  },
2242
- pure: uid.safe,
2243
- set: $.set,
2244
2399
  useSetter: function(){ setter = true; },
2245
2400
  useSimple: function(){ setter = false; }
2246
2401
  };
@@ -2260,35 +2415,38 @@ $.each.call((
2260
2415
  'species,split,toPrimitive,toStringTag,unscopables'
2261
2416
  ).split(','), function(it){
2262
2417
  var sym = require('./$.wks')(it);
2263
- symbolStatics[it] = Symbol === Base ? sym : wrap(sym);
2418
+ symbolStatics[it] = useNative ? sym : wrap(sym);
2264
2419
  }
2265
2420
  );
2266
2421
 
2267
2422
  setter = true;
2268
2423
 
2424
+ $def($def.G + $def.W, {Symbol: Symbol});
2425
+
2269
2426
  $def($def.S, 'Symbol', symbolStatics);
2270
2427
 
2271
- $def($def.S + $def.F * (Symbol != Base), 'Object', {
2428
+ $def($def.S + $def.F * !useNative, 'Object', {
2429
+ // 19.1.2.2 Object.create(O [, Properties])
2430
+ create: create,
2431
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
2432
+ defineProperty: defineProperty,
2433
+ // 19.1.2.3 Object.defineProperties(O, Properties)
2434
+ defineProperties: defineProperties,
2435
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
2436
+ getOwnPropertyDescriptor: getOwnPropertyDescriptor,
2272
2437
  // 19.1.2.7 Object.getOwnPropertyNames(O)
2273
- getOwnPropertyNames: function getOwnPropertyNames(it){
2274
- var names = getNames(toObject(it)), result = [], key, i = 0;
2275
- while(names.length > i)has(AllSymbols, key = names[i++]) || result.push(key);
2276
- return result;
2277
- },
2438
+ getOwnPropertyNames: getOwnPropertyNames,
2278
2439
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
2279
- getOwnPropertySymbols: function getOwnPropertySymbols(it){
2280
- var names = getNames(toObject(it)), result = [], key, i = 0;
2281
- while(names.length > i)has(AllSymbols, key = names[i++]) && result.push(AllSymbols[key]);
2282
- return result;
2283
- }
2440
+ getOwnPropertySymbols: getOwnPropertySymbols
2284
2441
  });
2285
2442
 
2443
+ // 19.4.3.5 Symbol.prototype[@@toStringTag]
2286
2444
  setTag(Symbol, 'Symbol');
2287
2445
  // 20.2.1.9 Math[@@toStringTag]
2288
2446
  setTag(Math, 'Math', true);
2289
2447
  // 24.3.3 JSON[@@toStringTag]
2290
2448
  setTag($.g.JSON, 'JSON', true);
2291
- },{"./$":16,"./$.cof":6,"./$.def":11,"./$.keyof":17,"./$.uid":25,"./$.wks":27}],60:[function(require,module,exports){
2449
+ },{"./$":23,"./$.assert":5,"./$.cof":7,"./$.def":13,"./$.enum-keys":15,"./$.keyof":24,"./$.uid":33,"./$.wks":35}],68:[function(require,module,exports){
2292
2450
  'use strict';
2293
2451
  var $ = require('./$')
2294
2452
  , weak = require('./$.collection-weak')
@@ -2329,7 +2487,7 @@ if($.FW && new WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
2329
2487
  };
2330
2488
  });
2331
2489
  }
2332
- },{"./$":16,"./$.collection":9,"./$.collection-weak":8}],61:[function(require,module,exports){
2490
+ },{"./$":23,"./$.collection":11,"./$.collection-weak":10}],69:[function(require,module,exports){
2333
2491
  'use strict';
2334
2492
  var weak = require('./$.collection-weak');
2335
2493
 
@@ -2340,14 +2498,17 @@ require('./$.collection')('WeakSet', {
2340
2498
  return weak.def(this, value, true);
2341
2499
  }
2342
2500
  }, weak, false, true);
2343
- },{"./$.collection":9,"./$.collection-weak":8}],62:[function(require,module,exports){
2501
+ },{"./$.collection":11,"./$.collection-weak":10}],70:[function(require,module,exports){
2344
2502
  // https://github.com/domenic/Array.prototype.includes
2345
2503
  var $def = require('./$.def');
2346
2504
  $def($def.P, 'Array', {
2347
2505
  includes: require('./$.array-includes')(true)
2348
2506
  });
2349
2507
  require('./$.unscope')('includes');
2350
- },{"./$.array-includes":2,"./$.def":11,"./$.unscope":26}],63:[function(require,module,exports){
2508
+ },{"./$.array-includes":3,"./$.def":13,"./$.unscope":34}],71:[function(require,module,exports){
2509
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
2510
+ require('./$.collection-to-json')('Map');
2511
+ },{"./$.collection-to-json":9}],72:[function(require,module,exports){
2351
2512
  // https://gist.github.com/WebReflection/9353781
2352
2513
  var $ = require('./$')
2353
2514
  , $def = require('./$.def')
@@ -2363,7 +2524,7 @@ $def($def.S, 'Object', {
2363
2524
  return result;
2364
2525
  }
2365
2526
  });
2366
- },{"./$":16,"./$.def":11,"./$.own-keys":18}],64:[function(require,module,exports){
2527
+ },{"./$":23,"./$.def":13,"./$.own-keys":25}],73:[function(require,module,exports){
2367
2528
  // http://goo.gl/XkBrjD
2368
2529
  var $ = require('./$')
2369
2530
  , $def = require('./$.def');
@@ -2384,30 +2545,22 @@ $def($def.S, 'Object', {
2384
2545
  values: createObjectToArray(false),
2385
2546
  entries: createObjectToArray(true)
2386
2547
  });
2387
- },{"./$":16,"./$.def":11}],65:[function(require,module,exports){
2548
+ },{"./$":23,"./$.def":13}],74:[function(require,module,exports){
2388
2549
  // https://gist.github.com/kangax/9698100
2389
2550
  var $def = require('./$.def');
2390
2551
  $def($def.S, 'RegExp', {
2391
2552
  escape: require('./$.replacer')(/([\\\-[\]{}()*+?.,^$|])/g, '\\$1', true)
2392
2553
  });
2393
- },{"./$.def":11,"./$.replacer":20}],66:[function(require,module,exports){
2554
+ },{"./$.def":13,"./$.replacer":27}],75:[function(require,module,exports){
2394
2555
  // https://github.com/DavidBruant/Map-Set.prototype.toJSON
2395
- var $def = require('./$.def')
2396
- , forOf = require('./$.iter').forOf;
2397
- $def($def.P, 'Set', {
2398
- toJSON: function(){
2399
- var arr = [];
2400
- forOf(this, false, arr.push, arr);
2401
- return arr;
2402
- }
2403
- });
2404
- },{"./$.def":11,"./$.iter":15}],67:[function(require,module,exports){
2556
+ require('./$.collection-to-json')('Set');
2557
+ },{"./$.collection-to-json":9}],76:[function(require,module,exports){
2405
2558
  // https://github.com/mathiasbynens/String.prototype.at
2406
2559
  var $def = require('./$.def');
2407
2560
  $def($def.P, 'String', {
2408
2561
  at: require('./$.string-at')(true)
2409
2562
  });
2410
- },{"./$.def":11,"./$.string-at":23}],68:[function(require,module,exports){
2563
+ },{"./$.def":13,"./$.string-at":30}],77:[function(require,module,exports){
2411
2564
  // JavaScript 1.6 / Strawman array statics shim
2412
2565
  var $ = require('./$')
2413
2566
  , $def = require('./$.def')
@@ -2424,7 +2577,7 @@ setStatics('indexOf,every,some,forEach,map,filter,find,findIndex,includes', 3);
2424
2577
  setStatics('join,slice,concat,push,splice,unshift,sort,lastIndexOf,' +
2425
2578
  'reduce,reduceRight,copyWithin,fill,turn');
2426
2579
  $def($def.S, 'Array', statics);
2427
- },{"./$":16,"./$.ctx":10,"./$.def":11}],69:[function(require,module,exports){
2580
+ },{"./$":23,"./$.ctx":12,"./$.def":13}],78:[function(require,module,exports){
2428
2581
  require('./es6.array.iterator');
2429
2582
  var $ = require('./$')
2430
2583
  , Iterators = require('./$.iter').Iterators
@@ -2435,14 +2588,14 @@ if($.FW && NodeList && !(ITERATOR in NodeList.prototype)){
2435
2588
  $.hide(NodeList.prototype, ITERATOR, ArrayValues);
2436
2589
  }
2437
2590
  Iterators.NodeList = ArrayValues;
2438
- },{"./$":16,"./$.iter":15,"./$.wks":27,"./es6.array.iterator":34}],70:[function(require,module,exports){
2591
+ },{"./$":23,"./$.iter":22,"./$.wks":35,"./es6.array.iterator":42}],79:[function(require,module,exports){
2439
2592
  var $def = require('./$.def')
2440
2593
  , $task = require('./$.task');
2441
2594
  $def($def.G + $def.B, {
2442
2595
  setImmediate: $task.set,
2443
2596
  clearImmediate: $task.clear
2444
2597
  });
2445
- },{"./$.def":11,"./$.task":24}],71:[function(require,module,exports){
2598
+ },{"./$.def":13,"./$.task":31}],80:[function(require,module,exports){
2446
2599
  // ie9- setTimeout & setInterval additional parameters fix
2447
2600
  var $ = require('./$')
2448
2601
  , $def = require('./$.def')
@@ -2463,7 +2616,7 @@ $def($def.G + $def.B + $def.F * MSIE, {
2463
2616
  setTimeout: wrap($.g.setTimeout),
2464
2617
  setInterval: wrap($.g.setInterval)
2465
2618
  });
2466
- },{"./$":16,"./$.def":11,"./$.invoke":13,"./$.partial":19}],72:[function(require,module,exports){
2619
+ },{"./$":23,"./$.def":13,"./$.invoke":18,"./$.partial":26}],81:[function(require,module,exports){
2467
2620
  require('./modules/es5');
2468
2621
  require('./modules/es6.symbol');
2469
2622
  require('./modules/es6.object.assign');
@@ -2503,13 +2656,14 @@ require('./modules/es7.string.at');
2503
2656
  require('./modules/es7.regexp.escape');
2504
2657
  require('./modules/es7.object.get-own-property-descriptors');
2505
2658
  require('./modules/es7.object.to-array');
2659
+ require('./modules/es7.map.to-json');
2506
2660
  require('./modules/es7.set.to-json');
2507
2661
  require('./modules/js.array.statics');
2508
2662
  require('./modules/web.timers');
2509
2663
  require('./modules/web.immediate');
2510
2664
  require('./modules/web.dom.iterable');
2511
2665
  module.exports = require('./modules/$').core;
2512
- },{"./modules/$":16,"./modules/es5":28,"./modules/es6.array.copy-within":29,"./modules/es6.array.fill":30,"./modules/es6.array.find":32,"./modules/es6.array.find-index":31,"./modules/es6.array.from":33,"./modules/es6.array.iterator":34,"./modules/es6.array.of":35,"./modules/es6.array.species":36,"./modules/es6.function.name":37,"./modules/es6.map":38,"./modules/es6.math":39,"./modules/es6.number.constructor":40,"./modules/es6.number.statics":41,"./modules/es6.object.assign":42,"./modules/es6.object.is":43,"./modules/es6.object.set-prototype-of":44,"./modules/es6.object.statics-accept-primitives":45,"./modules/es6.object.to-string":46,"./modules/es6.promise":47,"./modules/es6.reflect":48,"./modules/es6.regexp":49,"./modules/es6.set":50,"./modules/es6.string.code-point-at":51,"./modules/es6.string.ends-with":52,"./modules/es6.string.from-code-point":53,"./modules/es6.string.includes":54,"./modules/es6.string.iterator":55,"./modules/es6.string.raw":56,"./modules/es6.string.repeat":57,"./modules/es6.string.starts-with":58,"./modules/es6.symbol":59,"./modules/es6.weak-map":60,"./modules/es6.weak-set":61,"./modules/es7.array.includes":62,"./modules/es7.object.get-own-property-descriptors":63,"./modules/es7.object.to-array":64,"./modules/es7.regexp.escape":65,"./modules/es7.set.to-json":66,"./modules/es7.string.at":67,"./modules/js.array.statics":68,"./modules/web.dom.iterable":69,"./modules/web.immediate":70,"./modules/web.timers":71}],73:[function(require,module,exports){
2666
+ },{"./modules/$":23,"./modules/es5":36,"./modules/es6.array.copy-within":37,"./modules/es6.array.fill":38,"./modules/es6.array.find":40,"./modules/es6.array.find-index":39,"./modules/es6.array.from":41,"./modules/es6.array.iterator":42,"./modules/es6.array.of":43,"./modules/es6.array.species":44,"./modules/es6.function.name":45,"./modules/es6.map":46,"./modules/es6.math":47,"./modules/es6.number.constructor":48,"./modules/es6.number.statics":49,"./modules/es6.object.assign":50,"./modules/es6.object.is":51,"./modules/es6.object.set-prototype-of":52,"./modules/es6.object.statics-accept-primitives":53,"./modules/es6.object.to-string":54,"./modules/es6.promise":55,"./modules/es6.reflect":56,"./modules/es6.regexp":57,"./modules/es6.set":58,"./modules/es6.string.code-point-at":59,"./modules/es6.string.ends-with":60,"./modules/es6.string.from-code-point":61,"./modules/es6.string.includes":62,"./modules/es6.string.iterator":63,"./modules/es6.string.raw":64,"./modules/es6.string.repeat":65,"./modules/es6.string.starts-with":66,"./modules/es6.symbol":67,"./modules/es6.weak-map":68,"./modules/es6.weak-set":69,"./modules/es7.array.includes":70,"./modules/es7.map.to-json":71,"./modules/es7.object.get-own-property-descriptors":72,"./modules/es7.object.to-array":73,"./modules/es7.regexp.escape":74,"./modules/es7.set.to-json":75,"./modules/es7.string.at":76,"./modules/js.array.statics":77,"./modules/web.dom.iterable":78,"./modules/web.immediate":79,"./modules/web.timers":80}],82:[function(require,module,exports){
2513
2667
  (function (global){
2514
2668
  /**
2515
2669
  * Copyright (c) 2014, Facebook, Inc.