[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/js/dist/ -> block-editor.js (source)

   1  this["wp"] = this["wp"] || {}; this["wp"]["blockEditor"] =
   2  /******/ (function(modules) { // webpackBootstrap
   3  /******/     // The module cache
   4  /******/     var installedModules = {};
   5  /******/
   6  /******/     // The require function
   7  /******/ 	function __webpack_require__(moduleId) {
   8  /******/
   9  /******/         // Check if module is in cache
  10  /******/         if(installedModules[moduleId]) {
  11  /******/             return installedModules[moduleId].exports;
  12  /******/         }
  13  /******/         // Create a new module (and put it into the cache)
  14  /******/         var module = installedModules[moduleId] = {
  15  /******/             i: moduleId,
  16  /******/             l: false,
  17  /******/             exports: {}
  18  /******/         };
  19  /******/
  20  /******/         // Execute the module function
  21  /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  22  /******/
  23  /******/         // Flag the module as loaded
  24  /******/         module.l = true;
  25  /******/
  26  /******/         // Return the exports of the module
  27  /******/         return module.exports;
  28  /******/     }
  29  /******/
  30  /******/
  31  /******/     // expose the modules object (__webpack_modules__)
  32  /******/     __webpack_require__.m = modules;
  33  /******/
  34  /******/     // expose the module cache
  35  /******/     __webpack_require__.c = installedModules;
  36  /******/
  37  /******/     // define getter function for harmony exports
  38  /******/     __webpack_require__.d = function(exports, name, getter) {
  39  /******/         if(!__webpack_require__.o(exports, name)) {
  40  /******/             Object.defineProperty(exports, name, { enumerable: true, get: getter });
  41  /******/         }
  42  /******/     };
  43  /******/
  44  /******/     // define __esModule on exports
  45  /******/     __webpack_require__.r = function(exports) {
  46  /******/         if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  47  /******/             Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  48  /******/         }
  49  /******/         Object.defineProperty(exports, '__esModule', { value: true });
  50  /******/     };
  51  /******/
  52  /******/     // create a fake namespace object
  53  /******/     // mode & 1: value is a module id, require it
  54  /******/     // mode & 2: merge all properties of value into the ns
  55  /******/     // mode & 4: return value when already ns object
  56  /******/     // mode & 8|1: behave like require
  57  /******/     __webpack_require__.t = function(value, mode) {
  58  /******/         if(mode & 1) value = __webpack_require__(value);
  59  /******/         if(mode & 8) return value;
  60  /******/         if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  61  /******/         var ns = Object.create(null);
  62  /******/         __webpack_require__.r(ns);
  63  /******/         Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  64  /******/         if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  65  /******/         return ns;
  66  /******/     };
  67  /******/
  68  /******/     // getDefaultExport function for compatibility with non-harmony modules
  69  /******/     __webpack_require__.n = function(module) {
  70  /******/         var getter = module && module.__esModule ?
  71  /******/ 			function getDefault() { return module['default']; } :
  72  /******/ 			function getModuleExports() { return module; };
  73  /******/         __webpack_require__.d(getter, 'a', getter);
  74  /******/         return getter;
  75  /******/     };
  76  /******/
  77  /******/     // Object.prototype.hasOwnProperty.call
  78  /******/     __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  79  /******/
  80  /******/     // __webpack_public_path__
  81  /******/     __webpack_require__.p = "";
  82  /******/
  83  /******/
  84  /******/     // Load entry module and return exports
  85  /******/     return __webpack_require__(__webpack_require__.s = 421);
  86  /******/ })
  87  /************************************************************************/
  88  /******/ ({
  89  
  90  /***/ 0:
  91  /***/ (function(module, exports) {
  92  
  93  (function() { module.exports = this["wp"]["element"]; }());
  94  
  95  /***/ }),
  96  
  97  /***/ 1:
  98  /***/ (function(module, exports) {
  99  
 100  (function() { module.exports = this["wp"]["i18n"]; }());
 101  
 102  /***/ }),
 103  
 104  /***/ 10:
 105  /***/ (function(module, exports) {
 106  
 107  (function() { module.exports = this["wp"]["blocks"]; }());
 108  
 109  /***/ }),
 110  
 111  /***/ 11:
 112  /***/ (function(module, exports, __webpack_require__) {
 113  
 114  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
 115    Copyright (c) 2017 Jed Watson.
 116    Licensed under the MIT License (MIT), see
 117    http://jedwatson.github.io/classnames
 118  */
 119  /* global define */
 120  
 121  (function () {
 122      'use strict';
 123  
 124      var hasOwn = {}.hasOwnProperty;
 125  
 126  	function classNames () {
 127          var classes = [];
 128  
 129          for (var i = 0; i < arguments.length; i++) {
 130              var arg = arguments[i];
 131              if (!arg) continue;
 132  
 133              var argType = typeof arg;
 134  
 135              if (argType === 'string' || argType === 'number') {
 136                  classes.push(arg);
 137              } else if (Array.isArray(arg) && arg.length) {
 138                  var inner = classNames.apply(null, arg);
 139                  if (inner) {
 140                      classes.push(inner);
 141                  }
 142              } else if (argType === 'object') {
 143                  for (var key in arg) {
 144                      if (hasOwn.call(arg, key) && arg[key]) {
 145                          classes.push(key);
 146                      }
 147                  }
 148              }
 149          }
 150  
 151          return classes.join(' ');
 152      }
 153  
 154      if ( true && module.exports) {
 155          classNames.default = classNames;
 156          module.exports = classNames;
 157      } else if (true) {
 158          // register as 'classnames', consistent with npm package name
 159          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
 160              return classNames;
 161          }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
 162                  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
 163      } else {}
 164  }());
 165  
 166  
 167  /***/ }),
 168  
 169  /***/ 113:
 170  /***/ (function(module, exports, __webpack_require__) {
 171  
 172  "use strict";
 173  // Copyright Joyent, Inc. and other Node contributors.
 174  //
 175  // Permission is hereby granted, free of charge, to any person obtaining a
 176  // copy of this software and associated documentation files (the
 177  // "Software"), to deal in the Software without restriction, including
 178  // without limitation the rights to use, copy, modify, merge, publish,
 179  // distribute, sublicense, and/or sell copies of the Software, and to permit
 180  // persons to whom the Software is furnished to do so, subject to the
 181  // following conditions:
 182  //
 183  // The above copyright notice and this permission notice shall be included
 184  // in all copies or substantial portions of the Software.
 185  //
 186  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 187  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 188  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 189  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 190  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 191  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 192  // USE OR OTHER DEALINGS IN THE SOFTWARE.
 193  
 194  
 195  
 196  var punycode = __webpack_require__(160);
 197  var util = __webpack_require__(162);
 198  
 199  exports.parse = urlParse;
 200  exports.resolve = urlResolve;
 201  exports.resolveObject = urlResolveObject;
 202  exports.format = urlFormat;
 203  
 204  exports.Url = Url;
 205  
 206  function Url() {
 207    this.protocol = null;
 208    this.slashes = null;
 209    this.auth = null;
 210    this.host = null;
 211    this.port = null;
 212    this.hostname = null;
 213    this.hash = null;
 214    this.search = null;
 215    this.query = null;
 216    this.pathname = null;
 217    this.path = null;
 218    this.href = null;
 219  }
 220  
 221  // Reference: RFC 3986, RFC 1808, RFC 2396
 222  
 223  // define these here so at least they only have to be
 224  // compiled once on the first module load.
 225  var protocolPattern = /^([a-z0-9.+-]+:)/i,
 226      portPattern = /:[0-9]*$/,
 227  
 228      // Special case for a simple path URL
 229      simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
 230  
 231      // RFC 2396: characters reserved for delimiting URLs.
 232      // We actually just auto-escape these.
 233      delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],
 234  
 235      // RFC 2396: characters not allowed for various reasons.
 236      unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
 237  
 238      // Allowed by RFCs, but cause of XSS attacks.  Always escape these.
 239      autoEscape = ['\''].concat(unwise),
 240      // Characters that are never ever allowed in a hostname.
 241      // Note that any invalid chars are also handled, but these
 242      // are the ones that are *expected* to be seen, so we fast-path
 243      // them.
 244      nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
 245      hostEndingChars = ['/', '?', '#'],
 246      hostnameMaxLen = 255,
 247      hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
 248      hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
 249      // protocols that can allow "unsafe" and "unwise" chars.
 250      unsafeProtocol = {
 251        'javascript': true,
 252        'javascript:': true
 253      },
 254      // protocols that never have a hostname.
 255      hostlessProtocol = {
 256        'javascript': true,
 257        'javascript:': true
 258      },
 259      // protocols that always contain a // bit.
 260      slashedProtocol = {
 261        'http': true,
 262        'https': true,
 263        'ftp': true,
 264        'gopher': true,
 265        'file': true,
 266        'http:': true,
 267        'https:': true,
 268        'ftp:': true,
 269        'gopher:': true,
 270        'file:': true
 271      },
 272      querystring = __webpack_require__(163);
 273  
 274  function urlParse(url, parseQueryString, slashesDenoteHost) {
 275    if (url && util.isObject(url) && url instanceof Url) return url;
 276  
 277    var u = new Url;
 278    u.parse(url, parseQueryString, slashesDenoteHost);
 279    return u;
 280  }
 281  
 282  Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
 283    if (!util.isString(url)) {
 284      throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
 285    }
 286  
 287    // Copy chrome, IE, opera backslash-handling behavior.
 288    // Back slashes before the query string get converted to forward slashes
 289    // See: https://code.google.com/p/chromium/issues/detail?id=25916
 290    var queryIndex = url.indexOf('?'),
 291        splitter =
 292            (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',
 293        uSplit = url.split(splitter),
 294        slashRegex = /\\/g;
 295    uSplit[0] = uSplit[0].replace(slashRegex, '/');
 296    url = uSplit.join(splitter);
 297  
 298    var rest = url;
 299  
 300    // trim before proceeding.
 301    // This is to support parse stuff like "  http://foo.com  \n"
 302    rest = rest.trim();
 303  
 304    if (!slashesDenoteHost && url.split('#').length === 1) {
 305      // Try fast path regexp
 306      var simplePath = simplePathPattern.exec(rest);
 307      if (simplePath) {
 308        this.path = rest;
 309        this.href = rest;
 310        this.pathname = simplePath[1];
 311        if (simplePath[2]) {
 312          this.search = simplePath[2];
 313          if (parseQueryString) {
 314            this.query = querystring.parse(this.search.substr(1));
 315          } else {
 316            this.query = this.search.substr(1);
 317          }
 318        } else if (parseQueryString) {
 319          this.search = '';
 320          this.query = {};
 321        }
 322        return this;
 323      }
 324    }
 325  
 326    var proto = protocolPattern.exec(rest);
 327    if (proto) {
 328      proto = proto[0];
 329      var lowerProto = proto.toLowerCase();
 330      this.protocol = lowerProto;
 331      rest = rest.substr(proto.length);
 332    }
 333  
 334    // figure out if it's got a host
 335    // user@server is *always* interpreted as a hostname, and url
 336    // resolution will treat //foo/bar as host=foo,path=bar because that's
 337    // how the browser resolves relative URLs.
 338    if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
 339      var slashes = rest.substr(0, 2) === '//';
 340      if (slashes && !(proto && hostlessProtocol[proto])) {
 341        rest = rest.substr(2);
 342        this.slashes = true;
 343      }
 344    }
 345  
 346    if (!hostlessProtocol[proto] &&
 347        (slashes || (proto && !slashedProtocol[proto]))) {
 348  
 349      // there's a hostname.
 350      // the first instance of /, ?, ;, or # ends the host.
 351      //
 352      // If there is an @ in the hostname, then non-host chars *are* allowed
 353      // to the left of the last @ sign, unless some host-ending character
 354      // comes *before* the @-sign.
 355      // URLs are obnoxious.
 356      //
 357      // ex:
 358      // http://a@b@c/ => user:a@b host:c
 359      // http://a@b?@c => user:a host:c path:/?@c
 360  
 361      // v0.12 TODO(isaacs): This is not quite how Chrome does things.
 362      // Review our test case against browsers more comprehensively.
 363  
 364      // find the first instance of any hostEndingChars
 365      var hostEnd = -1;
 366      for (var i = 0; i < hostEndingChars.length; i++) {
 367        var hec = rest.indexOf(hostEndingChars[i]);
 368        if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
 369          hostEnd = hec;
 370      }
 371  
 372      // at this point, either we have an explicit point where the
 373      // auth portion cannot go past, or the last @ char is the decider.
 374      var auth, atSign;
 375      if (hostEnd === -1) {
 376        // atSign can be anywhere.
 377        atSign = rest.lastIndexOf('@');
 378      } else {
 379        // atSign must be in auth portion.
 380        // http://a@b/c@d => host:b auth:a path:/c@d
 381        atSign = rest.lastIndexOf('@', hostEnd);
 382      }
 383  
 384      // Now we have a portion which is definitely the auth.
 385      // Pull that off.
 386      if (atSign !== -1) {
 387        auth = rest.slice(0, atSign);
 388        rest = rest.slice(atSign + 1);
 389        this.auth = decodeURIComponent(auth);
 390      }
 391  
 392      // the host is the remaining to the left of the first non-host char
 393      hostEnd = -1;
 394      for (var i = 0; i < nonHostChars.length; i++) {
 395        var hec = rest.indexOf(nonHostChars[i]);
 396        if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
 397          hostEnd = hec;
 398      }
 399      // if we still have not hit it, then the entire thing is a host.
 400      if (hostEnd === -1)
 401        hostEnd = rest.length;
 402  
 403      this.host = rest.slice(0, hostEnd);
 404      rest = rest.slice(hostEnd);
 405  
 406      // pull out port.
 407      this.parseHost();
 408  
 409      // we've indicated that there is a hostname,
 410      // so even if it's empty, it has to be present.
 411      this.hostname = this.hostname || '';
 412  
 413      // if hostname begins with [ and ends with ]
 414      // assume that it's an IPv6 address.
 415      var ipv6Hostname = this.hostname[0] === '[' &&
 416          this.hostname[this.hostname.length - 1] === ']';
 417  
 418      // validate a little.
 419      if (!ipv6Hostname) {
 420        var hostparts = this.hostname.split(/\./);
 421        for (var i = 0, l = hostparts.length; i < l; i++) {
 422          var part = hostparts[i];
 423          if (!part) continue;
 424          if (!part.match(hostnamePartPattern)) {
 425            var newpart = '';
 426            for (var j = 0, k = part.length; j < k; j++) {
 427              if (part.charCodeAt(j) > 127) {
 428                // we replace non-ASCII char with a temporary placeholder
 429                // we need this to make sure size of hostname is not
 430                // broken by replacing non-ASCII by nothing
 431                newpart += 'x';
 432              } else {
 433                newpart += part[j];
 434              }
 435            }
 436            // we test again with ASCII char only
 437            if (!newpart.match(hostnamePartPattern)) {
 438              var validParts = hostparts.slice(0, i);
 439              var notHost = hostparts.slice(i + 1);
 440              var bit = part.match(hostnamePartStart);
 441              if (bit) {
 442                validParts.push(bit[1]);
 443                notHost.unshift(bit[2]);
 444              }
 445              if (notHost.length) {
 446                rest = '/' + notHost.join('.') + rest;
 447              }
 448              this.hostname = validParts.join('.');
 449              break;
 450            }
 451          }
 452        }
 453      }
 454  
 455      if (this.hostname.length > hostnameMaxLen) {
 456        this.hostname = '';
 457      } else {
 458        // hostnames are always lower case.
 459        this.hostname = this.hostname.toLowerCase();
 460      }
 461  
 462      if (!ipv6Hostname) {
 463        // IDNA Support: Returns a punycoded representation of "domain".
 464        // It only converts parts of the domain name that
 465        // have non-ASCII characters, i.e. it doesn't matter if
 466        // you call it with a domain that already is ASCII-only.
 467        this.hostname = punycode.toASCII(this.hostname);
 468      }
 469  
 470      var p = this.port ? ':' + this.port : '';
 471      var h = this.hostname || '';
 472      this.host = h + p;
 473      this.href += this.host;
 474  
 475      // strip [ and ] from the hostname
 476      // the host field still retains them, though
 477      if (ipv6Hostname) {
 478        this.hostname = this.hostname.substr(1, this.hostname.length - 2);
 479        if (rest[0] !== '/') {
 480          rest = '/' + rest;
 481        }
 482      }
 483    }
 484  
 485    // now rest is set to the post-host stuff.
 486    // chop off any delim chars.
 487    if (!unsafeProtocol[lowerProto]) {
 488  
 489      // First, make 100% sure that any "autoEscape" chars get
 490      // escaped, even if encodeURIComponent doesn't think they
 491      // need to be.
 492      for (var i = 0, l = autoEscape.length; i < l; i++) {
 493        var ae = autoEscape[i];
 494        if (rest.indexOf(ae) === -1)
 495          continue;
 496        var esc = encodeURIComponent(ae);
 497        if (esc === ae) {
 498          esc = escape(ae);
 499        }
 500        rest = rest.split(ae).join(esc);
 501      }
 502    }
 503  
 504  
 505    // chop off from the tail first.
 506    var hash = rest.indexOf('#');
 507    if (hash !== -1) {
 508      // got a fragment string.
 509      this.hash = rest.substr(hash);
 510      rest = rest.slice(0, hash);
 511    }
 512    var qm = rest.indexOf('?');
 513    if (qm !== -1) {
 514      this.search = rest.substr(qm);
 515      this.query = rest.substr(qm + 1);
 516      if (parseQueryString) {
 517        this.query = querystring.parse(this.query);
 518      }
 519      rest = rest.slice(0, qm);
 520    } else if (parseQueryString) {
 521      // no query string, but parseQueryString still requested
 522      this.search = '';
 523      this.query = {};
 524    }
 525    if (rest) this.pathname = rest;
 526    if (slashedProtocol[lowerProto] &&
 527        this.hostname && !this.pathname) {
 528      this.pathname = '/';
 529    }
 530  
 531    //to support http.request
 532    if (this.pathname || this.search) {
 533      var p = this.pathname || '';
 534      var s = this.search || '';
 535      this.path = p + s;
 536    }
 537  
 538    // finally, reconstruct the href based on what has been validated.
 539    this.href = this.format();
 540    return this;
 541  };
 542  
 543  // format a parsed object into a url string
 544  function urlFormat(obj) {
 545    // ensure it's an object, and not a string url.
 546    // If it's an obj, this is a no-op.
 547    // this way, you can call url_format() on strings
 548    // to clean up potentially wonky urls.
 549    if (util.isString(obj)) obj = urlParse(obj);
 550    if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
 551    return obj.format();
 552  }
 553  
 554  Url.prototype.format = function() {
 555    var auth = this.auth || '';
 556    if (auth) {
 557      auth = encodeURIComponent(auth);
 558      auth = auth.replace(/%3A/i, ':');
 559      auth += '@';
 560    }
 561  
 562    var protocol = this.protocol || '',
 563        pathname = this.pathname || '',
 564        hash = this.hash || '',
 565        host = false,
 566        query = '';
 567  
 568    if (this.host) {
 569      host = auth + this.host;
 570    } else if (this.hostname) {
 571      host = auth + (this.hostname.indexOf(':') === -1 ?
 572          this.hostname :
 573          '[' + this.hostname + ']');
 574      if (this.port) {
 575        host += ':' + this.port;
 576      }
 577    }
 578  
 579    if (this.query &&
 580        util.isObject(this.query) &&
 581        Object.keys(this.query).length) {
 582      query = querystring.stringify(this.query);
 583    }
 584  
 585    var search = this.search || (query && ('?' + query)) || '';
 586  
 587    if (protocol && protocol.substr(-1) !== ':') protocol += ':';
 588  
 589    // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.
 590    // unless they had them to begin with.
 591    if (this.slashes ||
 592        (!protocol || slashedProtocol[protocol]) && host !== false) {
 593      host = '//' + (host || '');
 594      if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
 595    } else if (!host) {
 596      host = '';
 597    }
 598  
 599    if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
 600    if (search && search.charAt(0) !== '?') search = '?' + search;
 601  
 602    pathname = pathname.replace(/[?#]/g, function(match) {
 603      return encodeURIComponent(match);
 604    });
 605    search = search.replace('#', '%23');
 606  
 607    return protocol + host + pathname + search + hash;
 608  };
 609  
 610  function urlResolve(source, relative) {
 611    return urlParse(source, false, true).resolve(relative);
 612  }
 613  
 614  Url.prototype.resolve = function(relative) {
 615    return this.resolveObject(urlParse(relative, false, true)).format();
 616  };
 617  
 618  function urlResolveObject(source, relative) {
 619    if (!source) return relative;
 620    return urlParse(source, false, true).resolveObject(relative);
 621  }
 622  
 623  Url.prototype.resolveObject = function(relative) {
 624    if (util.isString(relative)) {
 625      var rel = new Url();
 626      rel.parse(relative, false, true);
 627      relative = rel;
 628    }
 629  
 630    var result = new Url();
 631    var tkeys = Object.keys(this);
 632    for (var tk = 0; tk < tkeys.length; tk++) {
 633      var tkey = tkeys[tk];
 634      result[tkey] = this[tkey];
 635    }
 636  
 637    // hash is always overridden, no matter what.
 638    // even href="" will remove it.
 639    result.hash = relative.hash;
 640  
 641    // if the relative url is empty, then there's nothing left to do here.
 642    if (relative.href === '') {
 643      result.href = result.format();
 644      return result;
 645    }
 646  
 647    // hrefs like //foo/bar always cut to the protocol.
 648    if (relative.slashes && !relative.protocol) {
 649      // take everything except the protocol from relative
 650      var rkeys = Object.keys(relative);
 651      for (var rk = 0; rk < rkeys.length; rk++) {
 652        var rkey = rkeys[rk];
 653        if (rkey !== 'protocol')
 654          result[rkey] = relative[rkey];
 655      }
 656  
 657      //urlParse appends trailing / to urls like http://www.example.com
 658      if (slashedProtocol[result.protocol] &&
 659          result.hostname && !result.pathname) {
 660        result.path = result.pathname = '/';
 661      }
 662  
 663      result.href = result.format();
 664      return result;
 665    }
 666  
 667    if (relative.protocol && relative.protocol !== result.protocol) {
 668      // if it's a known url protocol, then changing
 669      // the protocol does weird things
 670      // first, if it's not file:, then we MUST have a host,
 671      // and if there was a path
 672      // to begin with, then we MUST have a path.
 673      // if it is file:, then the host is dropped,
 674      // because that's known to be hostless.
 675      // anything else is assumed to be absolute.
 676      if (!slashedProtocol[relative.protocol]) {
 677        var keys = Object.keys(relative);
 678        for (var v = 0; v < keys.length; v++) {
 679          var k = keys[v];
 680          result[k] = relative[k];
 681        }
 682        result.href = result.format();
 683        return result;
 684      }
 685  
 686      result.protocol = relative.protocol;
 687      if (!relative.host && !hostlessProtocol[relative.protocol]) {
 688        var relPath = (relative.pathname || '').split('/');
 689        while (relPath.length && !(relative.host = relPath.shift()));
 690        if (!relative.host) relative.host = '';
 691        if (!relative.hostname) relative.hostname = '';
 692        if (relPath[0] !== '') relPath.unshift('');
 693        if (relPath.length < 2) relPath.unshift('');
 694        result.pathname = relPath.join('/');
 695      } else {
 696        result.pathname = relative.pathname;
 697      }
 698      result.search = relative.search;
 699      result.query = relative.query;
 700      result.host = relative.host || '';
 701      result.auth = relative.auth;
 702      result.hostname = relative.hostname || relative.host;
 703      result.port = relative.port;
 704      // to support http.request
 705      if (result.pathname || result.search) {
 706        var p = result.pathname || '';
 707        var s = result.search || '';
 708        result.path = p + s;
 709      }
 710      result.slashes = result.slashes || relative.slashes;
 711      result.href = result.format();
 712      return result;
 713    }
 714  
 715    var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),
 716        isRelAbs = (
 717            relative.host ||
 718            relative.pathname && relative.pathname.charAt(0) === '/'
 719        ),
 720        mustEndAbs = (isRelAbs || isSourceAbs ||
 721                      (result.host && relative.pathname)),
 722        removeAllDots = mustEndAbs,
 723        srcPath = result.pathname && result.pathname.split('/') || [],
 724        relPath = relative.pathname && relative.pathname.split('/') || [],
 725        psychotic = result.protocol && !slashedProtocol[result.protocol];
 726  
 727    // if the url is a non-slashed url, then relative
 728    // links like ../.. should be able
 729    // to crawl up to the hostname, as well.  This is strange.
 730    // result.protocol has already been set by now.
 731    // Later on, put the first path part into the host field.
 732    if (psychotic) {
 733      result.hostname = '';
 734      result.port = null;
 735      if (result.host) {
 736        if (srcPath[0] === '') srcPath[0] = result.host;
 737        else srcPath.unshift(result.host);
 738      }
 739      result.host = '';
 740      if (relative.protocol) {
 741        relative.hostname = null;
 742        relative.port = null;
 743        if (relative.host) {
 744          if (relPath[0] === '') relPath[0] = relative.host;
 745          else relPath.unshift(relative.host);
 746        }
 747        relative.host = null;
 748      }
 749      mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
 750    }
 751  
 752    if (isRelAbs) {
 753      // it's absolute.
 754      result.host = (relative.host || relative.host === '') ?
 755                    relative.host : result.host;
 756      result.hostname = (relative.hostname || relative.hostname === '') ?
 757                        relative.hostname : result.hostname;
 758      result.search = relative.search;
 759      result.query = relative.query;
 760      srcPath = relPath;
 761      // fall through to the dot-handling below.
 762    } else if (relPath.length) {
 763      // it's relative
 764      // throw away the existing file, and take the new path instead.
 765      if (!srcPath) srcPath = [];
 766      srcPath.pop();
 767      srcPath = srcPath.concat(relPath);
 768      result.search = relative.search;
 769      result.query = relative.query;
 770    } else if (!util.isNullOrUndefined(relative.search)) {
 771      // just pull out the search.
 772      // like href='?foo'.
 773      // Put this after the other two cases because it simplifies the booleans
 774      if (psychotic) {
 775        result.hostname = result.host = srcPath.shift();
 776        //occationaly the auth can get stuck only in host
 777        //this especially happens in cases like
 778        //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
 779        var authInHost = result.host && result.host.indexOf('@') > 0 ?
 780                         result.host.split('@') : false;
 781        if (authInHost) {
 782          result.auth = authInHost.shift();
 783          result.host = result.hostname = authInHost.shift();
 784        }
 785      }
 786      result.search = relative.search;
 787      result.query = relative.query;
 788      //to support http.request
 789      if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
 790        result.path = (result.pathname ? result.pathname : '') +
 791                      (result.search ? result.search : '');
 792      }
 793      result.href = result.format();
 794      return result;
 795    }
 796  
 797    if (!srcPath.length) {
 798      // no path at all.  easy.
 799      // we've already handled the other stuff above.
 800      result.pathname = null;
 801      //to support http.request
 802      if (result.search) {
 803        result.path = '/' + result.search;
 804      } else {
 805        result.path = null;
 806      }
 807      result.href = result.format();
 808      return result;
 809    }
 810  
 811    // if a url ENDs in . or .., then it must get a trailing slash.
 812    // however, if it ends in anything else non-slashy,
 813    // then it must NOT get a trailing slash.
 814    var last = srcPath.slice(-1)[0];
 815    var hasTrailingSlash = (
 816        (result.host || relative.host || srcPath.length > 1) &&
 817        (last === '.' || last === '..') || last === '');
 818  
 819    // strip single dots, resolve double dots to parent dir
 820    // if the path tries to go above the root, `up` ends up > 0
 821    var up = 0;
 822    for (var i = srcPath.length; i >= 0; i--) {
 823      last = srcPath[i];
 824      if (last === '.') {
 825        srcPath.splice(i, 1);
 826      } else if (last === '..') {
 827        srcPath.splice(i, 1);
 828        up++;
 829      } else if (up) {
 830        srcPath.splice(i, 1);
 831        up--;
 832      }
 833    }
 834  
 835    // if the path is allowed to go above the root, restore leading ..s
 836    if (!mustEndAbs && !removeAllDots) {
 837      for (; up--; up) {
 838        srcPath.unshift('..');
 839      }
 840    }
 841  
 842    if (mustEndAbs && srcPath[0] !== '' &&
 843        (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
 844      srcPath.unshift('');
 845    }
 846  
 847    if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
 848      srcPath.push('');
 849    }
 850  
 851    var isAbsolute = srcPath[0] === '' ||
 852        (srcPath[0] && srcPath[0].charAt(0) === '/');
 853  
 854    // put the host back
 855    if (psychotic) {
 856      result.hostname = result.host = isAbsolute ? '' :
 857                                      srcPath.length ? srcPath.shift() : '';
 858      //occationaly the auth can get stuck only in host
 859      //this especially happens in cases like
 860      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
 861      var authInHost = result.host && result.host.indexOf('@') > 0 ?
 862                       result.host.split('@') : false;
 863      if (authInHost) {
 864        result.auth = authInHost.shift();
 865        result.host = result.hostname = authInHost.shift();
 866      }
 867    }
 868  
 869    mustEndAbs = mustEndAbs || (result.host && srcPath.length);
 870  
 871    if (mustEndAbs && !isAbsolute) {
 872      srcPath.unshift('');
 873    }
 874  
 875    if (!srcPath.length) {
 876      result.pathname = null;
 877      result.path = null;
 878    } else {
 879      result.pathname = srcPath.join('/');
 880    }
 881  
 882    //to support request.http
 883    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
 884      result.path = (result.pathname ? result.pathname : '') +
 885                    (result.search ? result.search : '');
 886    }
 887    result.auth = relative.auth || result.auth;
 888    result.slashes = result.slashes || relative.slashes;
 889    result.href = result.format();
 890    return result;
 891  };
 892  
 893  Url.prototype.parseHost = function() {
 894    var host = this.host;
 895    var port = portPattern.exec(host);
 896    if (port) {
 897      port = port[0];
 898      if (port !== ':') {
 899        this.port = port.substr(1);
 900      }
 901      host = host.substr(0, host.length - port.length);
 902    }
 903    if (host) this.hostname = host;
 904  };
 905  
 906  
 907  /***/ }),
 908  
 909  /***/ 118:
 910  /***/ (function(module, exports, __webpack_require__) {
 911  
 912  "use strict";
 913  /**
 914   * Copyright (c) 2013-present, Facebook, Inc.
 915   *
 916   * This source code is licensed under the MIT license found in the
 917   * LICENSE file in the root directory of this source tree.
 918   */
 919  
 920  
 921  
 922  var ReactPropTypesSecret = __webpack_require__(119);
 923  
 924  function emptyFunction() {}
 925  function emptyFunctionWithReset() {}
 926  emptyFunctionWithReset.resetWarningCache = emptyFunction;
 927  
 928  module.exports = function() {
 929    function shim(props, propName, componentName, location, propFullName, secret) {
 930      if (secret === ReactPropTypesSecret) {
 931        // It is still safe when called from React.
 932        return;
 933      }
 934      var err = new Error(
 935        'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
 936        'Use PropTypes.checkPropTypes() to call them. ' +
 937        'Read more at http://fb.me/use-check-prop-types'
 938      );
 939      err.name = 'Invariant Violation';
 940      throw err;
 941    };
 942    shim.isRequired = shim;
 943    function getShim() {
 944      return shim;
 945    };
 946    // Important!
 947    // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
 948    var ReactPropTypes = {
 949      array: shim,
 950      bool: shim,
 951      func: shim,
 952      number: shim,
 953      object: shim,
 954      string: shim,
 955      symbol: shim,
 956  
 957      any: shim,
 958      arrayOf: getShim,
 959      element: shim,
 960      elementType: shim,
 961      instanceOf: getShim,
 962      node: shim,
 963      objectOf: getShim,
 964      oneOf: getShim,
 965      oneOfType: getShim,
 966      shape: getShim,
 967      exact: getShim,
 968  
 969      checkPropTypes: emptyFunctionWithReset,
 970      resetWarningCache: emptyFunction
 971    };
 972  
 973    ReactPropTypes.PropTypes = ReactPropTypes;
 974  
 975    return ReactPropTypes;
 976  };
 977  
 978  
 979  /***/ }),
 980  
 981  /***/ 119:
 982  /***/ (function(module, exports, __webpack_require__) {
 983  
 984  "use strict";
 985  /**
 986   * Copyright (c) 2013-present, Facebook, Inc.
 987   *
 988   * This source code is licensed under the MIT license found in the
 989   * LICENSE file in the root directory of this source tree.
 990   */
 991  
 992  
 993  
 994  var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
 995  
 996  module.exports = ReactPropTypesSecret;
 997  
 998  
 999  /***/ }),
1000  
1001  /***/ 12:
1002  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1003  
1004  "use strict";
1005  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _extends; });
1006  function _extends() {
1007    _extends = Object.assign || function (target) {
1008      for (var i = 1; i < arguments.length; i++) {
1009        var source = arguments[i];
1010  
1011        for (var key in source) {
1012          if (Object.prototype.hasOwnProperty.call(source, key)) {
1013            target[key] = source[key];
1014          }
1015        }
1016      }
1017  
1018      return target;
1019    };
1020  
1021    return _extends.apply(this, arguments);
1022  }
1023  
1024  /***/ }),
1025  
1026  /***/ 120:
1027  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1028  
1029  "use strict";
1030  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
1031  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
1032  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
1033  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
1034  
1035  
1036  /**
1037   * WordPress dependencies
1038   */
1039  
1040  var close = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
1041    xmlns: "http://www.w3.org/2000/svg",
1042    viewBox: "-2 -2 24 24"
1043  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
1044    d: "M14.95 6.46L11.41 10l3.54 3.54-1.41 1.41L10 11.42l-3.53 3.53-1.42-1.42L8.58 10 5.05 6.47l1.42-1.42L10 8.58l3.54-3.53z"
1045  }));
1046  /* harmony default export */ __webpack_exports__["a"] = (close);
1047  
1048  
1049  /***/ }),
1050  
1051  /***/ 127:
1052  /***/ (function(module, exports) {
1053  
1054  function _inheritsLoose(subClass, superClass) {
1055    subClass.prototype = Object.create(superClass.prototype);
1056    subClass.prototype.constructor = subClass;
1057    subClass.__proto__ = superClass;
1058  }
1059  
1060  module.exports = _inheritsLoose;
1061  
1062  /***/ }),
1063  
1064  /***/ 128:
1065  /***/ (function(module, exports) {
1066  
1067  (function() { module.exports = this["wp"]["wordcount"]; }());
1068  
1069  /***/ }),
1070  
1071  /***/ 13:
1072  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1073  
1074  "use strict";
1075  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; });
1076  function _defineProperties(target, props) {
1077    for (var i = 0; i < props.length; i++) {
1078      var descriptor = props[i];
1079      descriptor.enumerable = descriptor.enumerable || false;
1080      descriptor.configurable = true;
1081      if ("value" in descriptor) descriptor.writable = true;
1082      Object.defineProperty(target, descriptor.key, descriptor);
1083    }
1084  }
1085  
1086  function _createClass(Constructor, protoProps, staticProps) {
1087    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
1088    if (staticProps) _defineProperties(Constructor, staticProps);
1089    return Constructor;
1090  }
1091  
1092  /***/ }),
1093  
1094  /***/ 14:
1095  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1096  
1097  "use strict";
1098  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; });
1099  function _classCallCheck(instance, Constructor) {
1100    if (!(instance instanceof Constructor)) {
1101      throw new TypeError("Cannot call a class as a function");
1102    }
1103  }
1104  
1105  /***/ }),
1106  
1107  /***/ 144:
1108  /***/ (function(module, exports) {
1109  
1110  if (typeof Object.create === 'function') {
1111    // implementation from standard node.js 'util' module
1112    module.exports = function inherits(ctor, superCtor) {
1113      if (superCtor) {
1114        ctor.super_ = superCtor
1115        ctor.prototype = Object.create(superCtor.prototype, {
1116          constructor: {
1117            value: ctor,
1118            enumerable: false,
1119            writable: true,
1120            configurable: true
1121          }
1122        })
1123      }
1124    };
1125  } else {
1126    // old school shim for old browsers
1127    module.exports = function inherits(ctor, superCtor) {
1128      if (superCtor) {
1129        ctor.super_ = superCtor
1130        var TempCtor = function () {}
1131        TempCtor.prototype = superCtor.prototype
1132        ctor.prototype = new TempCtor()
1133        ctor.prototype.constructor = ctor
1134      }
1135    }
1136  }
1137  
1138  
1139  /***/ }),
1140  
1141  /***/ 15:
1142  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1143  
1144  "use strict";
1145  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; });
1146  /* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
1147  /* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
1148  
1149  
1150  function _possibleConstructorReturn(self, call) {
1151    if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) {
1152      return call;
1153    }
1154  
1155    return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self);
1156  }
1157  
1158  /***/ }),
1159  
1160  /***/ 150:
1161  /***/ (function(module, exports, __webpack_require__) {
1162  
1163  "use strict";
1164  
1165  
1166  var util = __webpack_require__(151);
1167  
1168  function scrollIntoView(elem, container, config) {
1169    config = config || {};
1170    // document 归一化到 window
1171    if (container.nodeType === 9) {
1172      container = util.getWindow(container);
1173    }
1174  
1175    var allowHorizontalScroll = config.allowHorizontalScroll;
1176    var onlyScrollIfNeeded = config.onlyScrollIfNeeded;
1177    var alignWithTop = config.alignWithTop;
1178    var alignWithLeft = config.alignWithLeft;
1179    var offsetTop = config.offsetTop || 0;
1180    var offsetLeft = config.offsetLeft || 0;
1181    var offsetBottom = config.offsetBottom || 0;
1182    var offsetRight = config.offsetRight || 0;
1183  
1184    allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;
1185  
1186    var isWin = util.isWindow(container);
1187    var elemOffset = util.offset(elem);
1188    var eh = util.outerHeight(elem);
1189    var ew = util.outerWidth(elem);
1190    var containerOffset = undefined;
1191    var ch = undefined;
1192    var cw = undefined;
1193    var containerScroll = undefined;
1194    var diffTop = undefined;
1195    var diffBottom = undefined;
1196    var win = undefined;
1197    var winScroll = undefined;
1198    var ww = undefined;
1199    var wh = undefined;
1200  
1201    if (isWin) {
1202      win = container;
1203      wh = util.height(win);
1204      ww = util.width(win);
1205      winScroll = {
1206        left: util.scrollLeft(win),
1207        top: util.scrollTop(win)
1208      };
1209      // elem 相对 container 可视视窗的距离
1210      diffTop = {
1211        left: elemOffset.left - winScroll.left - offsetLeft,
1212        top: elemOffset.top - winScroll.top - offsetTop
1213      };
1214      diffBottom = {
1215        left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,
1216        top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom
1217      };
1218      containerScroll = winScroll;
1219    } else {
1220      containerOffset = util.offset(container);
1221      ch = container.clientHeight;
1222      cw = container.clientWidth;
1223      containerScroll = {
1224        left: container.scrollLeft,
1225        top: container.scrollTop
1226      };
1227      // elem 相对 container 可视视窗的距离
1228      // 注意边框, offset 是边框到根节点
1229      diffTop = {
1230        left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,
1231        top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop
1232      };
1233      diffBottom = {
1234        left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,
1235        top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom
1236      };
1237    }
1238  
1239    if (diffTop.top < 0 || diffBottom.top > 0) {
1240      // 强制向上
1241      if (alignWithTop === true) {
1242        util.scrollTop(container, containerScroll.top + diffTop.top);
1243      } else if (alignWithTop === false) {
1244        util.scrollTop(container, containerScroll.top + diffBottom.top);
1245      } else {
1246        // 自动调整
1247        if (diffTop.top < 0) {
1248          util.scrollTop(container, containerScroll.top + diffTop.top);
1249        } else {
1250          util.scrollTop(container, containerScroll.top + diffBottom.top);
1251        }
1252      }
1253    } else {
1254      if (!onlyScrollIfNeeded) {
1255        alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;
1256        if (alignWithTop) {
1257          util.scrollTop(container, containerScroll.top + diffTop.top);
1258        } else {
1259          util.scrollTop(container, containerScroll.top + diffBottom.top);
1260        }
1261      }
1262    }
1263  
1264    if (allowHorizontalScroll) {
1265      if (diffTop.left < 0 || diffBottom.left > 0) {
1266        // 强制向上
1267        if (alignWithLeft === true) {
1268          util.scrollLeft(container, containerScroll.left + diffTop.left);
1269        } else if (alignWithLeft === false) {
1270          util.scrollLeft(container, containerScroll.left + diffBottom.left);
1271        } else {
1272          // 自动调整
1273          if (diffTop.left < 0) {
1274            util.scrollLeft(container, containerScroll.left + diffTop.left);
1275          } else {
1276            util.scrollLeft(container, containerScroll.left + diffBottom.left);
1277          }
1278        }
1279      } else {
1280        if (!onlyScrollIfNeeded) {
1281          alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;
1282          if (alignWithLeft) {
1283            util.scrollLeft(container, containerScroll.left + diffTop.left);
1284          } else {
1285            util.scrollLeft(container, containerScroll.left + diffBottom.left);
1286          }
1287        }
1288      }
1289    }
1290  }
1291  
1292  module.exports = scrollIntoView;
1293  
1294  /***/ }),
1295  
1296  /***/ 151:
1297  /***/ (function(module, exports, __webpack_require__) {
1298  
1299  "use strict";
1300  
1301  
1302  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
1303  
1304  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
1305  
1306  var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source;
1307  
1308  function getClientPosition(elem) {
1309    var box = undefined;
1310    var x = undefined;
1311    var y = undefined;
1312    var doc = elem.ownerDocument;
1313    var body = doc.body;
1314    var docElem = doc && doc.documentElement;
1315    // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
1316    box = elem.getBoundingClientRect();
1317  
1318    // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
1319    // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确
1320    // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin
1321  
1322    x = box.left;
1323    y = box.top;
1324  
1325    // In IE, most of the time, 2 extra pixels are added to the top and left
1326    // due to the implicit 2-pixel inset border.  In IE6/7 quirks mode and
1327    // IE6 standards mode, this border can be overridden by setting the
1328    // document element's border to zero -- thus, we cannot rely on the
1329    // offset always being 2 pixels.
1330  
1331    // In quirks mode, the offset can be determined by querying the body's
1332    // clientLeft/clientTop, but in standards mode, it is found by querying
1333    // the document element's clientLeft/clientTop.  Since we already called
1334    // getClientBoundingRect we have already forced a reflow, so it is not
1335    // too expensive just to query them all.
1336  
1337    // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的
1338    // 窗口边框标准是设 documentElement ,quirks 时设置 body
1339    // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去
1340    // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置
1341    // 标准 ie 下 docElem.clientTop 就是 border-top
1342    // ie7 html 即窗口边框改变不了。永远为 2
1343    // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0
1344  
1345    x -= docElem.clientLeft || body.clientLeft || 0;
1346    y -= docElem.clientTop || body.clientTop || 0;
1347  
1348    return {
1349      left: x,
1350      top: y
1351    };
1352  }
1353  
1354  function getScroll(w, top) {
1355    var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];
1356    var method = 'scroll' + (top ? 'Top' : 'Left');
1357    if (typeof ret !== 'number') {
1358      var d = w.document;
1359      // ie6,7,8 standard mode
1360      ret = d.documentElement[method];
1361      if (typeof ret !== 'number') {
1362        // quirks mode
1363        ret = d.body[method];
1364      }
1365    }
1366    return ret;
1367  }
1368  
1369  function getScrollLeft(w) {
1370    return getScroll(w);
1371  }
1372  
1373  function getScrollTop(w) {
1374    return getScroll(w, true);
1375  }
1376  
1377  function getOffset(el) {
1378    var pos = getClientPosition(el);
1379    var doc = el.ownerDocument;
1380    var w = doc.defaultView || doc.parentWindow;
1381    pos.left += getScrollLeft(w);
1382    pos.top += getScrollTop(w);
1383    return pos;
1384  }
1385  function _getComputedStyle(elem, name, computedStyle_) {
1386    var val = '';
1387    var d = elem.ownerDocument;
1388    var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);
1389  
1390    // https://github.com/kissyteam/kissy/issues/61
1391    if (computedStyle) {
1392      val = computedStyle.getPropertyValue(name) || computedStyle[name];
1393    }
1394  
1395    return val;
1396  }
1397  
1398  var _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');
1399  var RE_POS = /^(top|right|bottom|left)$/;
1400  var CURRENT_STYLE = 'currentStyle';
1401  var RUNTIME_STYLE = 'runtimeStyle';
1402  var LEFT = 'left';
1403  var PX = 'px';
1404  
1405  function _getComputedStyleIE(elem, name) {
1406    // currentStyle maybe null
1407    // http://msdn.microsoft.com/en-us/library/ms535231.aspx
1408    var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
1409  
1410    // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
1411    // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19
1412    // 在 ie 下不对,需要直接用 offset 方式
1413    // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了
1414  
1415    // From the awesome hack by Dean Edwards
1416    // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
1417    // If we're not dealing with a regular pixel number
1418    // but a number that has a weird ending, we need to convert it to pixels
1419    // exclude left right for relativity
1420    if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {
1421      // Remember the original values
1422      var style = elem.style;
1423      var left = style[LEFT];
1424      var rsLeft = elem[RUNTIME_STYLE][LEFT];
1425  
1426      // prevent flashing of content
1427      elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
1428  
1429      // Put in the new values to get a computed value out
1430      style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;
1431      ret = style.pixelLeft + PX;
1432  
1433      // Revert the changed values
1434      style[LEFT] = left;
1435  
1436      elem[RUNTIME_STYLE][LEFT] = rsLeft;
1437    }
1438    return ret === '' ? 'auto' : ret;
1439  }
1440  
1441  var getComputedStyleX = undefined;
1442  if (typeof window !== 'undefined') {
1443    getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
1444  }
1445  
1446  function each(arr, fn) {
1447    for (var i = 0; i < arr.length; i++) {
1448      fn(arr[i]);
1449    }
1450  }
1451  
1452  function isBorderBoxFn(elem) {
1453    return getComputedStyleX(elem, 'boxSizing') === 'border-box';
1454  }
1455  
1456  var BOX_MODELS = ['margin', 'border', 'padding'];
1457  var CONTENT_INDEX = -1;
1458  var PADDING_INDEX = 2;
1459  var BORDER_INDEX = 1;
1460  var MARGIN_INDEX = 0;
1461  
1462  function swap(elem, options, callback) {
1463    var old = {};
1464    var style = elem.style;
1465    var name = undefined;
1466  
1467    // Remember the old values, and insert the new ones
1468    for (name in options) {
1469      if (options.hasOwnProperty(name)) {
1470        old[name] = style[name];
1471        style[name] = options[name];
1472      }
1473    }
1474  
1475    callback.call(elem);
1476  
1477    // Revert the old values
1478    for (name in options) {
1479      if (options.hasOwnProperty(name)) {
1480        style[name] = old[name];
1481      }
1482    }
1483  }
1484  
1485  function getPBMWidth(elem, props, which) {
1486    var value = 0;
1487    var prop = undefined;
1488    var j = undefined;
1489    var i = undefined;
1490    for (j = 0; j < props.length; j++) {
1491      prop = props[j];
1492      if (prop) {
1493        for (i = 0; i < which.length; i++) {
1494          var cssProp = undefined;
1495          if (prop === 'border') {
1496            cssProp = prop + which[i] + 'Width';
1497          } else {
1498            cssProp = prop + which[i];
1499          }
1500          value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;
1501        }
1502      }
1503    }
1504    return value;
1505  }
1506  
1507  /**
1508   * A crude way of determining if an object is a window
1509   * @member util
1510   */
1511  function isWindow(obj) {
1512    // must use == for ie8
1513    /* eslint eqeqeq:0 */
1514    return obj != null && obj == obj.window;
1515  }
1516  
1517  var domUtils = {};
1518  
1519  each(['Width', 'Height'], function (name) {
1520    domUtils['doc' + name] = function (refWin) {
1521      var d = refWin.document;
1522      return Math.max(
1523      // firefox chrome documentElement.scrollHeight< body.scrollHeight
1524      // ie standard mode : documentElement.scrollHeight> body.scrollHeight
1525      d.documentElement['scroll' + name],
1526      // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
1527      d.body['scroll' + name], domUtils['viewport' + name](d));
1528    };
1529  
1530    domUtils['viewport' + name] = function (win) {
1531      // pc browser includes scrollbar in window.innerWidth
1532      var prop = 'client' + name;
1533      var doc = win.document;
1534      var body = doc.body;
1535      var documentElement = doc.documentElement;
1536      var documentElementProp = documentElement[prop];
1537      // 标准模式取 documentElement
1538      // backcompat 取 body
1539      return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;
1540    };
1541  });
1542  
1543  /*
1544   得到元素的大小信息
1545   @param elem
1546   @param name
1547   @param {String} [extra]  'padding' : (css width) + padding
1548   'border' : (css width) + padding + border
1549   'margin' : (css width) + padding + border + margin
1550   */
1551  function getWH(elem, name, extra) {
1552    if (isWindow(elem)) {
1553      return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);
1554    } else if (elem.nodeType === 9) {
1555      return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);
1556    }
1557    var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
1558    var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;
1559    var computedStyle = getComputedStyleX(elem);
1560    var isBorderBox = isBorderBoxFn(elem, computedStyle);
1561    var cssBoxValue = 0;
1562    if (borderBoxValue == null || borderBoxValue <= 0) {
1563      borderBoxValue = undefined;
1564      // Fall back to computed then un computed css if necessary
1565      cssBoxValue = getComputedStyleX(elem, name);
1566      if (cssBoxValue == null || Number(cssBoxValue) < 0) {
1567        cssBoxValue = elem.style[name] || 0;
1568      }
1569      // Normalize '', auto, and prepare for extra
1570      cssBoxValue = parseFloat(cssBoxValue) || 0;
1571    }
1572    if (extra === undefined) {
1573      extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;
1574    }
1575    var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;
1576    var val = borderBoxValue || cssBoxValue;
1577    if (extra === CONTENT_INDEX) {
1578      if (borderBoxValueOrIsBorderBox) {
1579        return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);
1580      }
1581      return cssBoxValue;
1582    }
1583    if (borderBoxValueOrIsBorderBox) {
1584      var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);
1585      return val + (extra === BORDER_INDEX ? 0 : padding);
1586    }
1587    return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);
1588  }
1589  
1590  var cssShow = {
1591    position: 'absolute',
1592    visibility: 'hidden',
1593    display: 'block'
1594  };
1595  
1596  // fix #119 : https://github.com/kissyteam/kissy/issues/119
1597  function getWHIgnoreDisplay(elem) {
1598    var val = undefined;
1599    var args = arguments;
1600    // in case elem is window
1601    // elem.offsetWidth === undefined
1602    if (elem.offsetWidth !== 0) {
1603      val = getWH.apply(undefined, args);
1604    } else {
1605      swap(elem, cssShow, function () {
1606        val = getWH.apply(undefined, args);
1607      });
1608    }
1609    return val;
1610  }
1611  
1612  function css(el, name, v) {
1613    var value = v;
1614    if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
1615      for (var i in name) {
1616        if (name.hasOwnProperty(i)) {
1617          css(el, i, name[i]);
1618        }
1619      }
1620      return undefined;
1621    }
1622    if (typeof value !== 'undefined') {
1623      if (typeof value === 'number') {
1624        value += 'px';
1625      }
1626      el.style[name] = value;
1627      return undefined;
1628    }
1629    return getComputedStyleX(el, name);
1630  }
1631  
1632  each(['width', 'height'], function (name) {
1633    var first = name.charAt(0).toUpperCase() + name.slice(1);
1634    domUtils['outer' + first] = function (el, includeMargin) {
1635      return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
1636    };
1637    var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
1638  
1639    domUtils[name] = function (elem, val) {
1640      if (val !== undefined) {
1641        if (elem) {
1642          var computedStyle = getComputedStyleX(elem);
1643          var isBorderBox = isBorderBoxFn(elem);
1644          if (isBorderBox) {
1645            val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);
1646          }
1647          return css(elem, name, val);
1648        }
1649        return undefined;
1650      }
1651      return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);
1652    };
1653  });
1654  
1655  // 设置 elem 相对 elem.ownerDocument 的坐标
1656  function setOffset(elem, offset) {
1657    // set position first, in-case top/left are set even on static elem
1658    if (css(elem, 'position') === 'static') {
1659      elem.style.position = 'relative';
1660    }
1661  
1662    var old = getOffset(elem);
1663    var ret = {};
1664    var current = undefined;
1665    var key = undefined;
1666  
1667    for (key in offset) {
1668      if (offset.hasOwnProperty(key)) {
1669        current = parseFloat(css(elem, key)) || 0;
1670        ret[key] = current + offset[key] - old[key];
1671      }
1672    }
1673    css(elem, ret);
1674  }
1675  
1676  module.exports = _extends({
1677    getWindow: function getWindow(node) {
1678      var doc = node.ownerDocument || node;
1679      return doc.defaultView || doc.parentWindow;
1680    },
1681    offset: function offset(el, value) {
1682      if (typeof value !== 'undefined') {
1683        setOffset(el, value);
1684      } else {
1685        return getOffset(el);
1686      }
1687    },
1688  
1689    isWindow: isWindow,
1690    each: each,
1691    css: css,
1692    clone: function clone(obj) {
1693      var ret = {};
1694      for (var i in obj) {
1695        if (obj.hasOwnProperty(i)) {
1696          ret[i] = obj[i];
1697        }
1698      }
1699      var overflow = obj.overflow;
1700      if (overflow) {
1701        for (var i in obj) {
1702          if (obj.hasOwnProperty(i)) {
1703            ret.overflow[i] = obj.overflow[i];
1704          }
1705        }
1706      }
1707      return ret;
1708    },
1709    scrollLeft: function scrollLeft(w, v) {
1710      if (isWindow(w)) {
1711        if (v === undefined) {
1712          return getScrollLeft(w);
1713        }
1714        window.scrollTo(v, getScrollTop(w));
1715      } else {
1716        if (v === undefined) {
1717          return w.scrollLeft;
1718        }
1719        w.scrollLeft = v;
1720      }
1721    },
1722    scrollTop: function scrollTop(w, v) {
1723      if (isWindow(w)) {
1724        if (v === undefined) {
1725          return getScrollTop(w);
1726        }
1727        window.scrollTo(getScrollLeft(w), v);
1728      } else {
1729        if (v === undefined) {
1730          return w.scrollTop;
1731        }
1732        w.scrollTop = v;
1733      }
1734    },
1735  
1736    viewportWidth: 0,
1737    viewportHeight: 0
1738  }, domUtils);
1739  
1740  /***/ }),
1741  
1742  /***/ 152:
1743  /***/ (function(module, exports, __webpack_require__) {
1744  
1745  "use strict";
1746  
1747  var __extends = (this && this.__extends) || (function () {
1748      var extendStatics = Object.setPrototypeOf ||
1749          ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1750          function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
1751      return function (d, b) {
1752          extendStatics(d, b);
1753          function __() { this.constructor = d; }
1754          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1755      };
1756  })();
1757  var __assign = (this && this.__assign) || Object.assign || function(t) {
1758      for (var s, i = 1, n = arguments.length; i < n; i++) {
1759          s = arguments[i];
1760          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
1761              t[p] = s[p];
1762      }
1763      return t;
1764  };
1765  var __rest = (this && this.__rest) || function (s, e) {
1766      var t = {};
1767      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
1768          t[p] = s[p];
1769      if (s != null && typeof Object.getOwnPropertySymbols === "function")
1770          for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
1771              t[p[i]] = s[p[i]];
1772      return t;
1773  };
1774  exports.__esModule = true;
1775  var React = __webpack_require__(21);
1776  var PropTypes = __webpack_require__(26);
1777  var autosize = __webpack_require__(153);
1778  var _getLineHeight = __webpack_require__(154);
1779  var getLineHeight = _getLineHeight;
1780  var UPDATE = 'autosize:update';
1781  var DESTROY = 'autosize:destroy';
1782  var RESIZED = 'autosize:resized';
1783  /**
1784   * A light replacement for built-in textarea component
1785   * which automaticaly adjusts its height to match the content
1786   */
1787  var TextareaAutosize = /** @class */ (function (_super) {
1788      __extends(TextareaAutosize, _super);
1789      function TextareaAutosize() {
1790          var _this = _super !== null && _super.apply(this, arguments) || this;
1791          _this.state = {
1792              lineHeight: null
1793          };
1794          _this.dispatchEvent = function (EVENT_TYPE) {
1795              var event = document.createEvent('Event');
1796              event.initEvent(EVENT_TYPE, true, false);
1797              _this.textarea.dispatchEvent(event);
1798          };
1799          _this.updateLineHeight = function () {
1800              _this.setState({
1801                  lineHeight: getLineHeight(_this.textarea)
1802              });
1803          };
1804          _this.onChange = function (e) {
1805              var onChange = _this.props.onChange;
1806              _this.currentValue = e.currentTarget.value;
1807              onChange && onChange(e);
1808          };
1809          _this.saveDOMNodeRef = function (ref) {
1810              var innerRef = _this.props.innerRef;
1811              if (innerRef) {
1812                  innerRef(ref);
1813              }
1814              _this.textarea = ref;
1815          };
1816          _this.getLocals = function () {
1817              var _a = _this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef"]), lineHeight = _a.state.lineHeight, saveDOMNodeRef = _a.saveDOMNodeRef;
1818              var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
1819              return __assign({}, props, { saveDOMNodeRef: saveDOMNodeRef, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, onChange: _this.onChange });
1820          };
1821          return _this;
1822      }
1823      TextareaAutosize.prototype.componentDidMount = function () {
1824          var _this = this;
1825          var _a = this.props, onResize = _a.onResize, maxRows = _a.maxRows;
1826          if (typeof maxRows === 'number') {
1827              this.updateLineHeight();
1828          }
1829          /*
1830            the defer is needed to:
1831              - force "autosize" to activate the scrollbar when this.props.maxRows is passed
1832              - support StyledComponents (see #71)
1833          */
1834          setTimeout(function () { return autosize(_this.textarea); });
1835          if (onResize) {
1836              this.textarea.addEventListener(RESIZED, onResize);
1837          }
1838      };
1839      TextareaAutosize.prototype.componentWillUnmount = function () {
1840          var onResize = this.props.onResize;
1841          if (onResize) {
1842              this.textarea.removeEventListener(RESIZED, onResize);
1843          }
1844          this.dispatchEvent(DESTROY);
1845      };
1846      TextareaAutosize.prototype.render = function () {
1847          var _a = this.getLocals(), children = _a.children, saveDOMNodeRef = _a.saveDOMNodeRef, locals = __rest(_a, ["children", "saveDOMNodeRef"]);
1848          return (React.createElement("textarea", __assign({}, locals, { ref: saveDOMNodeRef }), children));
1849      };
1850      TextareaAutosize.prototype.componentDidUpdate = function (prevProps) {
1851          if (this.props.value !== this.currentValue || this.props.rows !== prevProps.rows) {
1852              this.dispatchEvent(UPDATE);
1853          }
1854      };
1855      TextareaAutosize.defaultProps = {
1856          rows: 1
1857      };
1858      TextareaAutosize.propTypes = {
1859          rows: PropTypes.number,
1860          maxRows: PropTypes.number,
1861          onResize: PropTypes.func,
1862          innerRef: PropTypes.func
1863      };
1864      return TextareaAutosize;
1865  }(React.Component));
1866  exports["default"] = TextareaAutosize;
1867  
1868  
1869  /***/ }),
1870  
1871  /***/ 153:
1872  /***/ (function(module, exports, __webpack_require__) {
1873  
1874  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
1875      autosize 4.0.2
1876      license: MIT
1877      http://www.jacklmoore.com/autosize
1878  */
1879  (function (global, factory) {
1880      if (true) {
1881          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
1882                  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
1883                  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
1884                  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1885      } else { var mod; }
1886  })(this, function (module, exports) {
1887      'use strict';
1888  
1889      var map = typeof Map === "function" ? new Map() : function () {
1890          var keys = [];
1891          var values = [];
1892  
1893          return {
1894              has: function has(key) {
1895                  return keys.indexOf(key) > -1;
1896              },
1897              get: function get(key) {
1898                  return values[keys.indexOf(key)];
1899              },
1900              set: function set(key, value) {
1901                  if (keys.indexOf(key) === -1) {
1902                      keys.push(key);
1903                      values.push(value);
1904                  }
1905              },
1906              delete: function _delete(key) {
1907                  var index = keys.indexOf(key);
1908                  if (index > -1) {
1909                      keys.splice(index, 1);
1910                      values.splice(index, 1);
1911                  }
1912              }
1913          };
1914      }();
1915  
1916      var createEvent = function createEvent(name) {
1917          return new Event(name, { bubbles: true });
1918      };
1919      try {
1920          new Event('test');
1921      } catch (e) {
1922          // IE does not support `new Event()`
1923          createEvent = function createEvent(name) {
1924              var evt = document.createEvent('Event');
1925              evt.initEvent(name, true, false);
1926              return evt;
1927          };
1928      }
1929  
1930  	function assign(ta) {
1931          if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
1932  
1933          var heightOffset = null;
1934          var clientWidth = null;
1935          var cachedHeight = null;
1936  
1937  		function init() {
1938              var style = window.getComputedStyle(ta, null);
1939  
1940              if (style.resize === 'vertical') {
1941                  ta.style.resize = 'none';
1942              } else if (style.resize === 'both') {
1943                  ta.style.resize = 'horizontal';
1944              }
1945  
1946              if (style.boxSizing === 'content-box') {
1947                  heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
1948              } else {
1949                  heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
1950              }
1951              // Fix when a textarea is not on document body and heightOffset is Not a Number
1952              if (isNaN(heightOffset)) {
1953                  heightOffset = 0;
1954              }
1955  
1956              update();
1957          }
1958  
1959  		function changeOverflow(value) {
1960              {
1961                  // Chrome/Safari-specific fix:
1962                  // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
1963                  // made available by removing the scrollbar. The following forces the necessary text reflow.
1964                  var width = ta.style.width;
1965                  ta.style.width = '0px';
1966                  // Force reflow:
1967                  /* jshint ignore:start */
1968                  ta.offsetWidth;
1969                  /* jshint ignore:end */
1970                  ta.style.width = width;
1971              }
1972  
1973              ta.style.overflowY = value;
1974          }
1975  
1976  		function getParentOverflows(el) {
1977              var arr = [];
1978  
1979              while (el && el.parentNode && el.parentNode instanceof Element) {
1980                  if (el.parentNode.scrollTop) {
1981                      arr.push({
1982                          node: el.parentNode,
1983                          scrollTop: el.parentNode.scrollTop
1984                      });
1985                  }
1986                  el = el.parentNode;
1987              }
1988  
1989              return arr;
1990          }
1991  
1992  		function resize() {
1993              if (ta.scrollHeight === 0) {
1994                  // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
1995                  return;
1996              }
1997  
1998              var overflows = getParentOverflows(ta);
1999              var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
2000  
2001              ta.style.height = '';
2002              ta.style.height = ta.scrollHeight + heightOffset + 'px';
2003  
2004              // used to check if an update is actually necessary on window.resize
2005              clientWidth = ta.clientWidth;
2006  
2007              // prevents scroll-position jumping
2008              overflows.forEach(function (el) {
2009                  el.node.scrollTop = el.scrollTop;
2010              });
2011  
2012              if (docTop) {
2013                  document.documentElement.scrollTop = docTop;
2014              }
2015          }
2016  
2017  		function update() {
2018              resize();
2019  
2020              var styleHeight = Math.round(parseFloat(ta.style.height));
2021              var computed = window.getComputedStyle(ta, null);
2022  
2023              // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
2024              var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
2025  
2026              // The actual height not matching the style height (set via the resize method) indicates that 
2027              // the max-height has been exceeded, in which case the overflow should be allowed.
2028              if (actualHeight < styleHeight) {
2029                  if (computed.overflowY === 'hidden') {
2030                      changeOverflow('scroll');
2031                      resize();
2032                      actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
2033                  }
2034              } else {
2035                  // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
2036                  if (computed.overflowY !== 'hidden') {
2037                      changeOverflow('hidden');
2038                      resize();
2039                      actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
2040                  }
2041              }
2042  
2043              if (cachedHeight !== actualHeight) {
2044                  cachedHeight = actualHeight;
2045                  var evt = createEvent('autosize:resized');
2046                  try {
2047                      ta.dispatchEvent(evt);
2048                  } catch (err) {
2049                      // Firefox will throw an error on dispatchEvent for a detached element
2050                      // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
2051                  }
2052              }
2053          }
2054  
2055          var pageResize = function pageResize() {
2056              if (ta.clientWidth !== clientWidth) {
2057                  update();
2058              }
2059          };
2060  
2061          var destroy = function (style) {
2062              window.removeEventListener('resize', pageResize, false);
2063              ta.removeEventListener('input', update, false);
2064              ta.removeEventListener('keyup', update, false);
2065              ta.removeEventListener('autosize:destroy', destroy, false);
2066              ta.removeEventListener('autosize:update', update, false);
2067  
2068              Object.keys(style).forEach(function (key) {
2069                  ta.style[key] = style[key];
2070              });
2071  
2072              map.delete(ta);
2073          }.bind(ta, {
2074              height: ta.style.height,
2075              resize: ta.style.resize,
2076              overflowY: ta.style.overflowY,
2077              overflowX: ta.style.overflowX,
2078              wordWrap: ta.style.wordWrap
2079          });
2080  
2081          ta.addEventListener('autosize:destroy', destroy, false);
2082  
2083          // IE9 does not fire onpropertychange or oninput for deletions,
2084          // so binding to onkeyup to catch most of those events.
2085          // There is no way that I know of to detect something like 'cut' in IE9.
2086          if ('onpropertychange' in ta && 'oninput' in ta) {
2087              ta.addEventListener('keyup', update, false);
2088          }
2089  
2090          window.addEventListener('resize', pageResize, false);
2091          ta.addEventListener('input', update, false);
2092          ta.addEventListener('autosize:update', update, false);
2093          ta.style.overflowX = 'hidden';
2094          ta.style.wordWrap = 'break-word';
2095  
2096          map.set(ta, {
2097              destroy: destroy,
2098              update: update
2099          });
2100  
2101          init();
2102      }
2103  
2104  	function destroy(ta) {
2105          var methods = map.get(ta);
2106          if (methods) {
2107              methods.destroy();
2108          }
2109      }
2110  
2111  	function update(ta) {
2112          var methods = map.get(ta);
2113          if (methods) {
2114              methods.update();
2115          }
2116      }
2117  
2118      var autosize = null;
2119  
2120      // Do nothing in Node.js environment and IE8 (or lower)
2121      if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
2122          autosize = function autosize(el) {
2123              return el;
2124          };
2125          autosize.destroy = function (el) {
2126              return el;
2127          };
2128          autosize.update = function (el) {
2129              return el;
2130          };
2131      } else {
2132          autosize = function autosize(el, options) {
2133              if (el) {
2134                  Array.prototype.forEach.call(el.length ? el : [el], function (x) {
2135                      return assign(x, options);
2136                  });
2137              }
2138              return el;
2139          };
2140          autosize.destroy = function (el) {
2141              if (el) {
2142                  Array.prototype.forEach.call(el.length ? el : [el], destroy);
2143              }
2144              return el;
2145          };
2146          autosize.update = function (el) {
2147              if (el) {
2148                  Array.prototype.forEach.call(el.length ? el : [el], update);
2149              }
2150              return el;
2151          };
2152      }
2153  
2154      exports.default = autosize;
2155      module.exports = exports['default'];
2156  });
2157  
2158  /***/ }),
2159  
2160  /***/ 154:
2161  /***/ (function(module, exports, __webpack_require__) {
2162  
2163  // Load in dependencies
2164  var computedStyle = __webpack_require__(155);
2165  
2166  /**
2167   * Calculate the `line-height` of a given node
2168   * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
2169   * @returns {Number} `line-height` of the element in pixels
2170   */
2171  function lineHeight(node) {
2172    // Grab the line-height via style
2173    var lnHeightStr = computedStyle(node, 'line-height');
2174    var lnHeight = parseFloat(lnHeightStr, 10);
2175  
2176    // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
2177    if (lnHeightStr === lnHeight + '') {
2178      // Save the old lineHeight style and update the em unit to the element
2179      var _lnHeightStyle = node.style.lineHeight;
2180      node.style.lineHeight = lnHeightStr + 'em';
2181  
2182      // Calculate the em based height
2183      lnHeightStr = computedStyle(node, 'line-height');
2184      lnHeight = parseFloat(lnHeightStr, 10);
2185  
2186      // Revert the lineHeight style
2187      if (_lnHeightStyle) {
2188        node.style.lineHeight = _lnHeightStyle;
2189      } else {
2190        delete node.style.lineHeight;
2191      }
2192    }
2193  
2194    // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
2195    // DEV: `em` units are converted to `pt` in IE6
2196    // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
2197    if (lnHeightStr.indexOf('pt') !== -1) {
2198      lnHeight *= 4;
2199      lnHeight /= 3;
2200    // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
2201    } else if (lnHeightStr.indexOf('mm') !== -1) {
2202      lnHeight *= 96;
2203      lnHeight /= 25.4;
2204    // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
2205    } else if (lnHeightStr.indexOf('cm') !== -1) {
2206      lnHeight *= 96;
2207      lnHeight /= 2.54;
2208    // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
2209    } else if (lnHeightStr.indexOf('in') !== -1) {
2210      lnHeight *= 96;
2211    // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
2212    } else if (lnHeightStr.indexOf('pc') !== -1) {
2213      lnHeight *= 16;
2214    }
2215  
2216    // Continue our computation
2217    lnHeight = Math.round(lnHeight);
2218  
2219    // If the line-height is "normal", calculate by font-size
2220    if (lnHeightStr === 'normal') {
2221      // Create a temporary node
2222      var nodeName = node.nodeName;
2223      var _node = document.createElement(nodeName);
2224      _node.innerHTML = '&nbsp;';
2225  
2226      // If we have a text area, reset it to only 1 row
2227      // https://github.com/twolfson/line-height/issues/4
2228      if (nodeName.toUpperCase() === 'TEXTAREA') {
2229        _node.setAttribute('rows', '1');
2230      }
2231  
2232      // Set the font-size of the element
2233      var fontSizeStr = computedStyle(node, 'font-size');
2234      _node.style.fontSize = fontSizeStr;
2235  
2236      // Remove default padding/border which can affect offset height
2237      // https://github.com/twolfson/line-height/issues/4
2238      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
2239      _node.style.padding = '0px';
2240      _node.style.border = '0px';
2241  
2242      // Append it to the body
2243      var body = document.body;
2244      body.appendChild(_node);
2245  
2246      // Assume the line height of the element is the height
2247      var height = _node.offsetHeight;
2248      lnHeight = height;
2249  
2250      // Remove our child from the DOM
2251      body.removeChild(_node);
2252    }
2253  
2254    // Return the calculated height
2255    return lnHeight;
2256  }
2257  
2258  // Export lineHeight
2259  module.exports = lineHeight;
2260  
2261  
2262  /***/ }),
2263  
2264  /***/ 155:
2265  /***/ (function(module, exports) {
2266  
2267  // This code has been refactored for 140 bytes
2268  // You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js
2269  var computedStyle = function (el, prop, getComputedStyle) {
2270    getComputedStyle = window.getComputedStyle;
2271  
2272    // In one fell swoop
2273    return (
2274      // If we have getComputedStyle
2275      getComputedStyle ?
2276        // Query it
2277        // TODO: From CSS-Query notes, we might need (node, null) for FF
2278        getComputedStyle(el) :
2279  
2280      // Otherwise, we are in IE and use currentStyle
2281        el.currentStyle
2282    )[
2283      // Switch to camelCase for CSSOM
2284      // DEV: Grabbed from jQuery
2285      // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
2286      // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
2287      prop.replace(/-(\w)/gi, function (word, letter) {
2288        return letter.toUpperCase();
2289      })
2290    ];
2291  };
2292  
2293  module.exports = computedStyle;
2294  
2295  
2296  /***/ }),
2297  
2298  /***/ 156:
2299  /***/ (function(module, exports) {
2300  
2301  function _extends() {
2302    module.exports = _extends = Object.assign || function (target) {
2303      for (var i = 1; i < arguments.length; i++) {
2304        var source = arguments[i];
2305  
2306        for (var key in source) {
2307          if (Object.prototype.hasOwnProperty.call(source, key)) {
2308            target[key] = source[key];
2309          }
2310        }
2311      }
2312  
2313      return target;
2314    };
2315  
2316    return _extends.apply(this, arguments);
2317  }
2318  
2319  module.exports = _extends;
2320  
2321  /***/ }),
2322  
2323  /***/ 157:
2324  /***/ (function(module, exports) {
2325  
2326  function _objectWithoutPropertiesLoose(source, excluded) {
2327    if (source == null) return {};
2328    var target = {};
2329    var sourceKeys = Object.keys(source);
2330    var key, i;
2331  
2332    for (i = 0; i < sourceKeys.length; i++) {
2333      key = sourceKeys[i];
2334      if (excluded.indexOf(key) >= 0) continue;
2335      target[key] = source[key];
2336    }
2337  
2338    return target;
2339  }
2340  
2341  module.exports = _objectWithoutPropertiesLoose;
2342  
2343  /***/ }),
2344  
2345  /***/ 158:
2346  /***/ (function(module, exports) {
2347  
2348  function _assertThisInitialized(self) {
2349    if (self === void 0) {
2350      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
2351    }
2352  
2353    return self;
2354  }
2355  
2356  module.exports = _assertThisInitialized;
2357  
2358  /***/ }),
2359  
2360  /***/ 159:
2361  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2362  
2363  "use strict";
2364  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
2365  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
2366  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
2367  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
2368  
2369  
2370  /**
2371   * WordPress dependencies
2372   */
2373  
2374  var link = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
2375    xmlns: "http://www.w3.org/2000/svg",
2376    viewBox: "-2 -2 24 24"
2377  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
2378    d: "M17.74 2.76c1.68 1.69 1.68 4.41 0 6.1l-1.53 1.52c-1.12 1.12-2.7 1.47-4.14 1.09l2.62-2.61.76-.77.76-.76c.84-.84.84-2.2 0-3.04-.84-.85-2.2-.85-3.04 0l-.77.76-3.38 3.38c-.37-1.44-.02-3.02 1.1-4.14l1.52-1.53c1.69-1.68 4.42-1.68 6.1 0zM8.59 13.43l5.34-5.34c.42-.42.42-1.1 0-1.52-.44-.43-1.13-.39-1.53 0l-5.33 5.34c-.42.42-.42 1.1 0 1.52.44.43 1.13.39 1.52 0zm-.76 2.29l4.14-4.15c.38 1.44.03 3.02-1.09 4.14l-1.52 1.53c-1.69 1.68-4.41 1.68-6.1 0-1.68-1.68-1.68-4.42 0-6.1l1.53-1.52c1.12-1.12 2.7-1.47 4.14-1.1l-4.14 4.15c-.85.84-.85 2.2 0 3.05.84.84 2.2.84 3.04 0z"
2379  }));
2380  /* harmony default export */ __webpack_exports__["a"] = (link);
2381  
2382  
2383  /***/ }),
2384  
2385  /***/ 16:
2386  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2387  
2388  "use strict";
2389  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; });
2390  function _getPrototypeOf(o) {
2391    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
2392      return o.__proto__ || Object.getPrototypeOf(o);
2393    };
2394    return _getPrototypeOf(o);
2395  }
2396  
2397  /***/ }),
2398  
2399  /***/ 160:
2400  /***/ (function(module, exports, __webpack_require__) {
2401  
2402  /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.3.2 by @mathias */
2403  ;(function(root) {
2404  
2405      /** Detect free variables */
2406      var freeExports =  true && exports &&
2407          !exports.nodeType && exports;
2408      var freeModule =  true && module &&
2409          !module.nodeType && module;
2410      var freeGlobal = typeof global == 'object' && global;
2411      if (
2412          freeGlobal.global === freeGlobal ||
2413          freeGlobal.window === freeGlobal ||
2414          freeGlobal.self === freeGlobal
2415      ) {
2416          root = freeGlobal;
2417      }
2418  
2419      /**
2420       * The `punycode` object.
2421       * @name punycode
2422       * @type Object
2423       */
2424      var punycode,
2425  
2426      /** Highest positive signed 32-bit float value */
2427      maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
2428  
2429      /** Bootstring parameters */
2430      base = 36,
2431      tMin = 1,
2432      tMax = 26,
2433      skew = 38,
2434      damp = 700,
2435      initialBias = 72,
2436      initialN = 128, // 0x80
2437      delimiter = '-', // '\x2D'
2438  
2439      /** Regular expressions */
2440      regexPunycode = /^xn--/,
2441      regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
2442      regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
2443  
2444      /** Error messages */
2445      errors = {
2446          'overflow': 'Overflow: input needs wider integers to process',
2447          'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
2448          'invalid-input': 'Invalid input'
2449      },
2450  
2451      /** Convenience shortcuts */
2452      baseMinusTMin = base - tMin,
2453      floor = Math.floor,
2454      stringFromCharCode = String.fromCharCode,
2455  
2456      /** Temporary variable */
2457      key;
2458  
2459      /*--------------------------------------------------------------------------*/
2460  
2461      /**
2462       * A generic error utility function.
2463       * @private
2464       * @param {String} type The error type.
2465       * @returns {Error} Throws a `RangeError` with the applicable error message.
2466       */
2467  	function error(type) {
2468          throw RangeError(errors[type]);
2469      }
2470  
2471      /**
2472       * A generic `Array#map` utility function.
2473       * @private
2474       * @param {Array} array The array to iterate over.
2475       * @param {Function} callback The function that gets called for every array
2476       * item.
2477       * @returns {Array} A new array of values returned by the callback function.
2478       */
2479  	function map(array, fn) {
2480          var length = array.length;
2481          var result = [];
2482          while (length--) {
2483              result[length] = fn(array[length]);
2484          }
2485          return result;
2486      }
2487  
2488      /**
2489       * A simple `Array#map`-like wrapper to work with domain name strings or email
2490       * addresses.
2491       * @private
2492       * @param {String} domain The domain name or email address.
2493       * @param {Function} callback The function that gets called for every
2494       * character.
2495       * @returns {Array} A new string of characters returned by the callback
2496       * function.
2497       */
2498  	function mapDomain(string, fn) {
2499          var parts = string.split('@');
2500          var result = '';
2501          if (parts.length > 1) {
2502              // In email addresses, only the domain name should be punycoded. Leave
2503              // the local part (i.e. everything up to `@`) intact.
2504              result = parts[0] + '@';
2505              string = parts[1];
2506          }
2507          // Avoid `split(regex)` for IE8 compatibility. See #17.
2508          string = string.replace(regexSeparators, '\x2E');
2509          var labels = string.split('.');
2510          var encoded = map(labels, fn).join('.');
2511          return result + encoded;
2512      }
2513  
2514      /**
2515       * Creates an array containing the numeric code points of each Unicode
2516       * character in the string. While JavaScript uses UCS-2 internally,
2517       * this function will convert a pair of surrogate halves (each of which
2518       * UCS-2 exposes as separate characters) into a single code point,
2519       * matching UTF-16.
2520       * @see `punycode.ucs2.encode`
2521       * @see <https://mathiasbynens.be/notes/javascript-encoding>
2522       * @memberOf punycode.ucs2
2523       * @name decode
2524       * @param {String} string The Unicode input string (UCS-2).
2525       * @returns {Array} The new array of code points.
2526       */
2527  	function ucs2decode(string) {
2528          var output = [],
2529              counter = 0,
2530              length = string.length,
2531              value,
2532              extra;
2533          while (counter < length) {
2534              value = string.charCodeAt(counter++);
2535              if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
2536                  // high surrogate, and there is a next character
2537                  extra = string.charCodeAt(counter++);
2538                  if ((extra & 0xFC00) == 0xDC00) { // low surrogate
2539                      output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
2540                  } else {
2541                      // unmatched surrogate; only append this code unit, in case the next
2542                      // code unit is the high surrogate of a surrogate pair
2543                      output.push(value);
2544                      counter--;
2545                  }
2546              } else {
2547                  output.push(value);
2548              }
2549          }
2550          return output;
2551      }
2552  
2553      /**
2554       * Creates a string based on an array of numeric code points.
2555       * @see `punycode.ucs2.decode`
2556       * @memberOf punycode.ucs2
2557       * @name encode
2558       * @param {Array} codePoints The array of numeric code points.
2559       * @returns {String} The new Unicode string (UCS-2).
2560       */
2561  	function ucs2encode(array) {
2562          return map(array, function(value) {
2563              var output = '';
2564              if (value > 0xFFFF) {
2565                  value -= 0x10000;
2566                  output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
2567                  value = 0xDC00 | value & 0x3FF;
2568              }
2569              output += stringFromCharCode(value);
2570              return output;
2571          }).join('');
2572      }
2573  
2574      /**
2575       * Converts a basic code point into a digit/integer.
2576       * @see `digitToBasic()`
2577       * @private
2578       * @param {Number} codePoint The basic numeric code point value.
2579       * @returns {Number} The numeric value of a basic code point (for use in
2580       * representing integers) in the range `0` to `base - 1`, or `base` if
2581       * the code point does not represent a value.
2582       */
2583  	function basicToDigit(codePoint) {
2584          if (codePoint - 48 < 10) {
2585              return codePoint - 22;
2586          }
2587          if (codePoint - 65 < 26) {
2588              return codePoint - 65;
2589          }
2590          if (codePoint - 97 < 26) {
2591              return codePoint - 97;
2592          }
2593          return base;
2594      }
2595  
2596      /**
2597       * Converts a digit/integer into a basic code point.
2598       * @see `basicToDigit()`
2599       * @private
2600       * @param {Number} digit The numeric value of a basic code point.
2601       * @returns {Number} The basic code point whose value (when used for
2602       * representing integers) is `digit`, which needs to be in the range
2603       * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
2604       * used; else, the lowercase form is used. The behavior is undefined
2605       * if `flag` is non-zero and `digit` has no uppercase form.
2606       */
2607  	function digitToBasic(digit, flag) {
2608          //  0..25 map to ASCII a..z or A..Z
2609          // 26..35 map to ASCII 0..9
2610          return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
2611      }
2612  
2613      /**
2614       * Bias adaptation function as per section 3.4 of RFC 3492.
2615       * http://tools.ietf.org/html/rfc3492#section-3.4
2616       * @private
2617       */
2618  	function adapt(delta, numPoints, firstTime) {
2619          var k = 0;
2620          delta = firstTime ? floor(delta / damp) : delta >> 1;
2621          delta += floor(delta / numPoints);
2622          for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
2623              delta = floor(delta / baseMinusTMin);
2624          }
2625          return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
2626      }
2627  
2628      /**
2629       * Converts a Punycode string of ASCII-only symbols to a string of Unicode
2630       * symbols.
2631       * @memberOf punycode
2632       * @param {String} input The Punycode string of ASCII-only symbols.
2633       * @returns {String} The resulting string of Unicode symbols.
2634       */
2635  	function decode(input) {
2636          // Don't use UCS-2
2637          var output = [],
2638              inputLength = input.length,
2639              out,
2640              i = 0,
2641              n = initialN,
2642              bias = initialBias,
2643              basic,
2644              j,
2645              index,
2646              oldi,
2647              w,
2648              k,
2649              digit,
2650              t,
2651              /** Cached calculation results */
2652              baseMinusT;
2653  
2654          // Handle the basic code points: let `basic` be the number of input code
2655          // points before the last delimiter, or `0` if there is none, then copy
2656          // the first basic code points to the output.
2657  
2658          basic = input.lastIndexOf(delimiter);
2659          if (basic < 0) {
2660              basic = 0;
2661          }
2662  
2663          for (j = 0; j < basic; ++j) {
2664              // if it's not a basic code point
2665              if (input.charCodeAt(j) >= 0x80) {
2666                  error('not-basic');
2667              }
2668              output.push(input.charCodeAt(j));
2669          }
2670  
2671          // Main decoding loop: start just after the last delimiter if any basic code
2672          // points were copied; start at the beginning otherwise.
2673  
2674          for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
2675  
2676              // `index` is the index of the next character to be consumed.
2677              // Decode a generalized variable-length integer into `delta`,
2678              // which gets added to `i`. The overflow checking is easier
2679              // if we increase `i` as we go, then subtract off its starting
2680              // value at the end to obtain `delta`.
2681              for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
2682  
2683                  if (index >= inputLength) {
2684                      error('invalid-input');
2685                  }
2686  
2687                  digit = basicToDigit(input.charCodeAt(index++));
2688  
2689                  if (digit >= base || digit > floor((maxInt - i) / w)) {
2690                      error('overflow');
2691                  }
2692  
2693                  i += digit * w;
2694                  t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
2695  
2696                  if (digit < t) {
2697                      break;
2698                  }
2699  
2700                  baseMinusT = base - t;
2701                  if (w > floor(maxInt / baseMinusT)) {
2702                      error('overflow');
2703                  }
2704  
2705                  w *= baseMinusT;
2706  
2707              }
2708  
2709              out = output.length + 1;
2710              bias = adapt(i - oldi, out, oldi == 0);
2711  
2712              // `i` was supposed to wrap around from `out` to `0`,
2713              // incrementing `n` each time, so we'll fix that now:
2714              if (floor(i / out) > maxInt - n) {
2715                  error('overflow');
2716              }
2717  
2718              n += floor(i / out);
2719              i %= out;
2720  
2721              // Insert `n` at position `i` of the output
2722              output.splice(i++, 0, n);
2723  
2724          }
2725  
2726          return ucs2encode(output);
2727      }
2728  
2729      /**
2730       * Converts a string of Unicode symbols (e.g. a domain name label) to a
2731       * Punycode string of ASCII-only symbols.
2732       * @memberOf punycode
2733       * @param {String} input The string of Unicode symbols.
2734       * @returns {String} The resulting Punycode string of ASCII-only symbols.
2735       */
2736  	function encode(input) {
2737          var n,
2738              delta,
2739              handledCPCount,
2740              basicLength,
2741              bias,
2742              j,
2743              m,
2744              q,
2745              k,
2746              t,
2747              currentValue,
2748              output = [],
2749              /** `inputLength` will hold the number of code points in `input`. */
2750              inputLength,
2751              /** Cached calculation results */
2752              handledCPCountPlusOne,
2753              baseMinusT,
2754              qMinusT;
2755  
2756          // Convert the input in UCS-2 to Unicode
2757          input = ucs2decode(input);
2758  
2759          // Cache the length
2760          inputLength = input.length;
2761  
2762          // Initialize the state
2763          n = initialN;
2764          delta = 0;
2765          bias = initialBias;
2766  
2767          // Handle the basic code points
2768          for (j = 0; j < inputLength; ++j) {
2769              currentValue = input[j];
2770              if (currentValue < 0x80) {
2771                  output.push(stringFromCharCode(currentValue));
2772              }
2773          }
2774  
2775          handledCPCount = basicLength = output.length;
2776  
2777          // `handledCPCount` is the number of code points that have been handled;
2778          // `basicLength` is the number of basic code points.
2779  
2780          // Finish the basic string - if it is not empty - with a delimiter
2781          if (basicLength) {
2782              output.push(delimiter);
2783          }
2784  
2785          // Main encoding loop:
2786          while (handledCPCount < inputLength) {
2787  
2788              // All non-basic code points < n have been handled already. Find the next
2789              // larger one:
2790              for (m = maxInt, j = 0; j < inputLength; ++j) {
2791                  currentValue = input[j];
2792                  if (currentValue >= n && currentValue < m) {
2793                      m = currentValue;
2794                  }
2795              }
2796  
2797              // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
2798              // but guard against overflow
2799              handledCPCountPlusOne = handledCPCount + 1;
2800              if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
2801                  error('overflow');
2802              }
2803  
2804              delta += (m - n) * handledCPCountPlusOne;
2805              n = m;
2806  
2807              for (j = 0; j < inputLength; ++j) {
2808                  currentValue = input[j];
2809  
2810                  if (currentValue < n && ++delta > maxInt) {
2811                      error('overflow');
2812                  }
2813  
2814                  if (currentValue == n) {
2815                      // Represent delta as a generalized variable-length integer
2816                      for (q = delta, k = base; /* no condition */; k += base) {
2817                          t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
2818                          if (q < t) {
2819                              break;
2820                          }
2821                          qMinusT = q - t;
2822                          baseMinusT = base - t;
2823                          output.push(
2824                              stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
2825                          );
2826                          q = floor(qMinusT / baseMinusT);
2827                      }
2828  
2829                      output.push(stringFromCharCode(digitToBasic(q, 0)));
2830                      bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
2831                      delta = 0;
2832                      ++handledCPCount;
2833                  }
2834              }
2835  
2836              ++delta;
2837              ++n;
2838  
2839          }
2840          return output.join('');
2841      }
2842  
2843      /**
2844       * Converts a Punycode string representing a domain name or an email address
2845       * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
2846       * it doesn't matter if you call it on a string that has already been
2847       * converted to Unicode.
2848       * @memberOf punycode
2849       * @param {String} input The Punycoded domain name or email address to
2850       * convert to Unicode.
2851       * @returns {String} The Unicode representation of the given Punycode
2852       * string.
2853       */
2854  	function toUnicode(input) {
2855          return mapDomain(input, function(string) {
2856              return regexPunycode.test(string)
2857                  ? decode(string.slice(4).toLowerCase())
2858                  : string;
2859          });
2860      }
2861  
2862      /**
2863       * Converts a Unicode string representing a domain name or an email address to
2864       * Punycode. Only the non-ASCII parts of the domain name will be converted,
2865       * i.e. it doesn't matter if you call it with a domain that's already in
2866       * ASCII.
2867       * @memberOf punycode
2868       * @param {String} input The domain name or email address to convert, as a
2869       * Unicode string.
2870       * @returns {String} The Punycode representation of the given domain name or
2871       * email address.
2872       */
2873  	function toASCII(input) {
2874          return mapDomain(input, function(string) {
2875              return regexNonASCII.test(string)
2876                  ? 'xn--' + encode(string)
2877                  : string;
2878          });
2879      }
2880  
2881      /*--------------------------------------------------------------------------*/
2882  
2883      /** Define the public API */
2884      punycode = {
2885          /**
2886           * A string representing the current Punycode.js version number.
2887           * @memberOf punycode
2888           * @type String
2889           */
2890          'version': '1.3.2',
2891          /**
2892           * An object of methods to convert from JavaScript's internal character
2893           * representation (UCS-2) to Unicode code points, and back.
2894           * @see <https://mathiasbynens.be/notes/javascript-encoding>
2895           * @memberOf punycode
2896           * @type Object
2897           */
2898          'ucs2': {
2899              'decode': ucs2decode,
2900              'encode': ucs2encode
2901          },
2902          'decode': decode,
2903          'encode': encode,
2904          'toASCII': toASCII,
2905          'toUnicode': toUnicode
2906      };
2907  
2908      /** Expose `punycode` */
2909      // Some AMD build optimizers, like r.js, check for specific condition patterns
2910      // like the following:
2911      if (
2912          true
2913      ) {
2914          !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
2915              return punycode;
2916          }).call(exports, __webpack_require__, exports, module),
2917                  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2918      } else {}
2919  
2920  }(this));
2921  
2922  /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(161)(module), __webpack_require__(73)))
2923  
2924  /***/ }),
2925  
2926  /***/ 161:
2927  /***/ (function(module, exports) {
2928  
2929  module.exports = function(module) {
2930      if (!module.webpackPolyfill) {
2931          module.deprecate = function() {};
2932          module.paths = [];
2933          // module.parent = undefined by default
2934          if (!module.children) module.children = [];
2935          Object.defineProperty(module, "loaded", {
2936              enumerable: true,
2937              get: function() {
2938                  return module.l;
2939              }
2940          });
2941          Object.defineProperty(module, "id", {
2942              enumerable: true,
2943              get: function() {
2944                  return module.i;
2945              }
2946          });
2947          module.webpackPolyfill = 1;
2948      }
2949      return module;
2950  };
2951  
2952  
2953  /***/ }),
2954  
2955  /***/ 162:
2956  /***/ (function(module, exports, __webpack_require__) {
2957  
2958  "use strict";
2959  
2960  
2961  module.exports = {
2962    isString: function(arg) {
2963      return typeof(arg) === 'string';
2964    },
2965    isObject: function(arg) {
2966      return typeof(arg) === 'object' && arg !== null;
2967    },
2968    isNull: function(arg) {
2969      return arg === null;
2970    },
2971    isNullOrUndefined: function(arg) {
2972      return arg == null;
2973    }
2974  };
2975  
2976  
2977  /***/ }),
2978  
2979  /***/ 163:
2980  /***/ (function(module, exports, __webpack_require__) {
2981  
2982  "use strict";
2983  
2984  
2985  exports.decode = exports.parse = __webpack_require__(164);
2986  exports.encode = exports.stringify = __webpack_require__(165);
2987  
2988  
2989  /***/ }),
2990  
2991  /***/ 164:
2992  /***/ (function(module, exports, __webpack_require__) {
2993  
2994  "use strict";
2995  // Copyright Joyent, Inc. and other Node contributors.
2996  //
2997  // Permission is hereby granted, free of charge, to any person obtaining a
2998  // copy of this software and associated documentation files (the
2999  // "Software"), to deal in the Software without restriction, including
3000  // without limitation the rights to use, copy, modify, merge, publish,
3001  // distribute, sublicense, and/or sell copies of the Software, and to permit
3002  // persons to whom the Software is furnished to do so, subject to the
3003  // following conditions:
3004  //
3005  // The above copyright notice and this permission notice shall be included
3006  // in all copies or substantial portions of the Software.
3007  //
3008  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
3009  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
3010  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
3011  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
3012  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
3013  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
3014  // USE OR OTHER DEALINGS IN THE SOFTWARE.
3015  
3016  
3017  
3018  // If obj.hasOwnProperty has been overridden, then calling
3019  // obj.hasOwnProperty(prop) will break.
3020  // See: https://github.com/joyent/node/issues/1707
3021  function hasOwnProperty(obj, prop) {
3022    return Object.prototype.hasOwnProperty.call(obj, prop);
3023  }
3024  
3025  module.exports = function(qs, sep, eq, options) {
3026    sep = sep || '&';
3027    eq = eq || '=';
3028    var obj = {};
3029  
3030    if (typeof qs !== 'string' || qs.length === 0) {
3031      return obj;
3032    }
3033  
3034    var regexp = /\+/g;
3035    qs = qs.split(sep);
3036  
3037    var maxKeys = 1000;
3038    if (options && typeof options.maxKeys === 'number') {
3039      maxKeys = options.maxKeys;
3040    }
3041  
3042    var len = qs.length;
3043    // maxKeys <= 0 means that we should not limit keys count
3044    if (maxKeys > 0 && len > maxKeys) {
3045      len = maxKeys;
3046    }
3047  
3048    for (var i = 0; i < len; ++i) {
3049      var x = qs[i].replace(regexp, '%20'),
3050          idx = x.indexOf(eq),
3051          kstr, vstr, k, v;
3052  
3053      if (idx >= 0) {
3054        kstr = x.substr(0, idx);
3055        vstr = x.substr(idx + 1);
3056      } else {
3057        kstr = x;
3058        vstr = '';
3059      }
3060  
3061      k = decodeURIComponent(kstr);
3062      v = decodeURIComponent(vstr);
3063  
3064      if (!hasOwnProperty(obj, k)) {
3065        obj[k] = v;
3066      } else if (isArray(obj[k])) {
3067        obj[k].push(v);
3068      } else {
3069        obj[k] = [obj[k], v];
3070      }
3071    }
3072  
3073    return obj;
3074  };
3075  
3076  var isArray = Array.isArray || function (xs) {
3077    return Object.prototype.toString.call(xs) === '[object Array]';
3078  };
3079  
3080  
3081  /***/ }),
3082  
3083  /***/ 165:
3084  /***/ (function(module, exports, __webpack_require__) {
3085  
3086  "use strict";
3087  // Copyright Joyent, Inc. and other Node contributors.
3088  //
3089  // Permission is hereby granted, free of charge, to any person obtaining a
3090  // copy of this software and associated documentation files (the
3091  // "Software"), to deal in the Software without restriction, including
3092  // without limitation the rights to use, copy, modify, merge, publish,
3093  // distribute, sublicense, and/or sell copies of the Software, and to permit
3094  // persons to whom the Software is furnished to do so, subject to the
3095  // following conditions:
3096  //
3097  // The above copyright notice and this permission notice shall be included
3098  // in all copies or substantial portions of the Software.
3099  //
3100  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
3101  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
3102  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
3103  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
3104  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
3105  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
3106  // USE OR OTHER DEALINGS IN THE SOFTWARE.
3107  
3108  
3109  
3110  var stringifyPrimitive = function(v) {
3111    switch (typeof v) {
3112      case 'string':
3113        return v;
3114  
3115      case 'boolean':
3116        return v ? 'true' : 'false';
3117  
3118      case 'number':
3119        return isFinite(v) ? v : '';
3120  
3121      default:
3122        return '';
3123    }
3124  };
3125  
3126  module.exports = function(obj, sep, eq, name) {
3127    sep = sep || '&';
3128    eq = eq || '=';
3129    if (obj === null) {
3130      obj = undefined;
3131    }
3132  
3133    if (typeof obj === 'object') {
3134      return map(objectKeys(obj), function(k) {
3135        var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
3136        if (isArray(obj[k])) {
3137          return map(obj[k], function(v) {
3138            return ks + encodeURIComponent(stringifyPrimitive(v));
3139          }).join(sep);
3140        } else {
3141          return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
3142        }
3143      }).join(sep);
3144  
3145    }
3146  
3147    if (!name) return '';
3148    return encodeURIComponent(stringifyPrimitive(name)) + eq +
3149           encodeURIComponent(stringifyPrimitive(obj));
3150  };
3151  
3152  var isArray = Array.isArray || function (xs) {
3153    return Object.prototype.toString.call(xs) === '[object Array]';
3154  };
3155  
3156  function map (xs, f) {
3157    if (xs.map) return xs.map(f);
3158    var res = [];
3159    for (var i = 0; i < xs.length; i++) {
3160      res.push(f(xs[i], i));
3161    }
3162    return res;
3163  }
3164  
3165  var objectKeys = Object.keys || function (obj) {
3166    var res = [];
3167    for (var key in obj) {
3168      if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
3169    }
3170    return res;
3171  };
3172  
3173  
3174  /***/ }),
3175  
3176  /***/ 17:
3177  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3178  
3179  "use strict";
3180  
3181  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
3182  function _setPrototypeOf(o, p) {
3183    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
3184      o.__proto__ = p;
3185      return o;
3186    };
3187  
3188    return _setPrototypeOf(o, p);
3189  }
3190  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
3191  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _inherits; });
3192  
3193  function _inherits(subClass, superClass) {
3194    if (typeof superClass !== "function" && superClass !== null) {
3195      throw new TypeError("Super expression must either be null or a function");
3196    }
3197  
3198    subClass.prototype = Object.create(superClass && superClass.prototype, {
3199      constructor: {
3200        value: subClass,
3201        writable: true,
3202        configurable: true
3203      }
3204    });
3205    if (superClass) _setPrototypeOf(subClass, superClass);
3206  }
3207  
3208  /***/ }),
3209  
3210  /***/ 18:
3211  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3212  
3213  "use strict";
3214  
3215  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
3216  var arrayLikeToArray = __webpack_require__(25);
3217  
3218  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
3219  
3220  function _arrayWithoutHoles(arr) {
3221    if (Array.isArray(arr)) return Object(arrayLikeToArray["a" /* default */])(arr);
3222  }
3223  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
3224  var iterableToArray = __webpack_require__(35);
3225  
3226  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
3227  var unsupportedIterableToArray = __webpack_require__(27);
3228  
3229  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
3230  function _nonIterableSpread() {
3231    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3232  }
3233  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
3234  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _toConsumableArray; });
3235  
3236  
3237  
3238  
3239  function _toConsumableArray(arr) {
3240    return _arrayWithoutHoles(arr) || Object(iterableToArray["a" /* default */])(arr) || Object(unsupportedIterableToArray["a" /* default */])(arr) || _nonIterableSpread();
3241  }
3242  
3243  /***/ }),
3244  
3245  /***/ 184:
3246  /***/ (function(module, exports) {
3247  
3248  (function() { module.exports = this["wp"]["tokenList"]; }());
3249  
3250  /***/ }),
3251  
3252  /***/ 19:
3253  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3254  
3255  "use strict";
3256  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; });
3257  /* harmony import */ var _objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
3258  
3259  function _objectWithoutProperties(source, excluded) {
3260    if (source == null) return {};
3261    var target = Object(_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(source, excluded);
3262    var key, i;
3263  
3264    if (Object.getOwnPropertySymbols) {
3265      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
3266  
3267      for (i = 0; i < sourceSymbolKeys.length; i++) {
3268        key = sourceSymbolKeys[i];
3269        if (excluded.indexOf(key) >= 0) continue;
3270        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
3271        target[key] = source[key];
3272      }
3273    }
3274  
3275    return target;
3276  }
3277  
3278  /***/ }),
3279  
3280  /***/ 191:
3281  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3282  
3283  "use strict";
3284  /* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
3285  /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
3286  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
3287  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__);
3288  
3289  
3290  
3291  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
3292  
3293  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3294  
3295  /**
3296   * WordPress dependencies
3297   */
3298  
3299  
3300  function Icon(_ref) {
3301    var icon = _ref.icon,
3302        _ref$size = _ref.size,
3303        size = _ref$size === void 0 ? 24 : _ref$size,
3304        props = Object(_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_ref, ["icon", "size"]);
3305  
3306    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__["cloneElement"])(icon, _objectSpread({
3307      width: size,
3308      height: size
3309    }, props));
3310  }
3311  
3312  /* harmony default export */ __webpack_exports__["a"] = (Icon);
3313  
3314  
3315  /***/ }),
3316  
3317  /***/ 192:
3318  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3319  
3320  "use strict";
3321  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
3322  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
3323  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
3324  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
3325  
3326  
3327  /**
3328   * WordPress dependencies
3329   */
3330  
3331  var keyboardReturn = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
3332    xmlns: "http://www.w3.org/2000/svg",
3333    viewBox: "-2 -2 24 24"
3334  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
3335    d: "M16 4h2v9H7v3l-5-4 5-4v3h9V4z"
3336  }));
3337  /* harmony default export */ __webpack_exports__["a"] = (keyboardReturn);
3338  
3339  
3340  /***/ }),
3341  
3342  /***/ 2:
3343  /***/ (function(module, exports) {
3344  
3345  (function() { module.exports = this["lodash"]; }());
3346  
3347  /***/ }),
3348  
3349  /***/ 20:
3350  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3351  
3352  "use strict";
3353  
3354  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
3355  var arrayWithHoles = __webpack_require__(38);
3356  
3357  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
3358  function _iterableToArrayLimit(arr, i) {
3359    if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
3360    var _arr = [];
3361    var _n = true;
3362    var _d = false;
3363    var _e = undefined;
3364  
3365    try {
3366      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
3367        _arr.push(_s.value);
3368  
3369        if (i && _arr.length === i) break;
3370      }
3371    } catch (err) {
3372      _d = true;
3373      _e = err;
3374    } finally {
3375      try {
3376        if (!_n && _i["return"] != null) _i["return"]();
3377      } finally {
3378        if (_d) throw _e;
3379      }
3380    }
3381  
3382    return _arr;
3383  }
3384  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
3385  var unsupportedIterableToArray = __webpack_require__(27);
3386  
3387  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
3388  var nonIterableRest = __webpack_require__(39);
3389  
3390  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js
3391  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _slicedToArray; });
3392  
3393  
3394  
3395  
3396  function _slicedToArray(arr, i) {
3397    return Object(arrayWithHoles["a" /* default */])(arr) || _iterableToArrayLimit(arr, i) || Object(unsupportedIterableToArray["a" /* default */])(arr, i) || Object(nonIterableRest["a" /* default */])();
3398  }
3399  
3400  /***/ }),
3401  
3402  /***/ 21:
3403  /***/ (function(module, exports) {
3404  
3405  (function() { module.exports = this["React"]; }());
3406  
3407  /***/ }),
3408  
3409  /***/ 22:
3410  /***/ (function(module, exports) {
3411  
3412  (function() { module.exports = this["wp"]["keycodes"]; }());
3413  
3414  /***/ }),
3415  
3416  /***/ 23:
3417  /***/ (function(module, exports) {
3418  
3419  (function() { module.exports = this["regeneratorRuntime"]; }());
3420  
3421  /***/ }),
3422  
3423  /***/ 24:
3424  /***/ (function(module, exports) {
3425  
3426  (function() { module.exports = this["wp"]["richText"]; }());
3427  
3428  /***/ }),
3429  
3430  /***/ 25:
3431  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3432  
3433  "use strict";
3434  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayLikeToArray; });
3435  function _arrayLikeToArray(arr, len) {
3436    if (len == null || len > arr.length) len = arr.length;
3437  
3438    for (var i = 0, arr2 = new Array(len); i < len; i++) {
3439      arr2[i] = arr[i];
3440    }
3441  
3442    return arr2;
3443  }
3444  
3445  /***/ }),
3446  
3447  /***/ 26:
3448  /***/ (function(module, exports, __webpack_require__) {
3449  
3450  /**
3451   * Copyright (c) 2013-present, Facebook, Inc.
3452   *
3453   * This source code is licensed under the MIT license found in the
3454   * LICENSE file in the root directory of this source tree.
3455   */
3456  
3457  if (false) { var throwOnDirectAccess, ReactIs; } else {
3458    // By explicitly using `prop-types` you are opting into new production behavior.
3459    // http://fb.me/prop-types-in-prod
3460    module.exports = __webpack_require__(118)();
3461  }
3462  
3463  
3464  /***/ }),
3465  
3466  /***/ 261:
3467  /***/ (function(module, exports, __webpack_require__) {
3468  
3469  "use strict";
3470  
3471  
3472  Object.defineProperty(exports, "__esModule", {
3473    value: true
3474  });
3475  /**
3476   * Redux dispatch multiple actions
3477   */
3478  
3479  function multi(_ref) {
3480    var dispatch = _ref.dispatch;
3481  
3482    return function (next) {
3483      return function (action) {
3484        return Array.isArray(action) ? action.filter(Boolean).map(dispatch) : next(action);
3485      };
3486    };
3487  }
3488  
3489  /**
3490   * Exports
3491   */
3492  
3493  exports.default = multi;
3494  
3495  /***/ }),
3496  
3497  /***/ 262:
3498  /***/ (function(module, exports, __webpack_require__) {
3499  
3500  /*!
3501  
3502   diff v3.5.0
3503  
3504  Software License Agreement (BSD License)
3505  
3506  Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>
3507  
3508  All rights reserved.
3509  
3510  Redistribution and use of this software in source and binary forms, with or without modification,
3511  are permitted provided that the following conditions are met:
3512  
3513  * Redistributions of source code must retain the above
3514    copyright notice, this list of conditions and the
3515    following disclaimer.
3516  
3517  * Redistributions in binary form must reproduce the above
3518    copyright notice, this list of conditions and the
3519    following disclaimer in the documentation and/or other
3520    materials provided with the distribution.
3521  
3522  * Neither the name of Kevin Decker nor the names of its
3523    contributors may be used to endorse or promote products
3524    derived from this software without specific prior
3525    written permission.
3526  
3527  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
3528  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
3529  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
3530  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3531  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3532  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
3533  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
3534  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3535  @license
3536  */
3537  (function webpackUniversalModuleDefinition(root, factory) {
3538      if(true)
3539          module.exports = factory();
3540      else {}
3541  })(this, function() {
3542  return /******/ (function(modules) { // webpackBootstrap
3543  /******/     // The module cache
3544  /******/     var installedModules = {};
3545  
3546  /******/     // The require function
3547  /******/ 	function __webpack_require__(moduleId) {
3548  
3549  /******/         // Check if module is in cache
3550  /******/         if(installedModules[moduleId])
3551  /******/             return installedModules[moduleId].exports;
3552  
3553  /******/         // Create a new module (and put it into the cache)
3554  /******/         var module = installedModules[moduleId] = {
3555  /******/             exports: {},
3556  /******/             id: moduleId,
3557  /******/             loaded: false
3558  /******/         };
3559  
3560  /******/         // Execute the module function
3561  /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
3562  
3563  /******/         // Flag the module as loaded
3564  /******/         module.loaded = true;
3565  
3566  /******/         // Return the exports of the module
3567  /******/         return module.exports;
3568  /******/     }
3569  
3570  
3571  /******/     // expose the modules object (__webpack_modules__)
3572  /******/     __webpack_require__.m = modules;
3573  
3574  /******/     // expose the module cache
3575  /******/     __webpack_require__.c = installedModules;
3576  
3577  /******/     // __webpack_public_path__
3578  /******/     __webpack_require__.p = "";
3579  
3580  /******/     // Load entry module and return exports
3581  /******/     return __webpack_require__(0);
3582  /******/ })
3583  /************************************************************************/
3584  /******/ ([
3585  /* 0 */
3586  /***/ (function(module, exports, __webpack_require__) {
3587  
3588      /*istanbul ignore start*/'use strict';
3589  
3590      exports.__esModule = true;
3591      exports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.merge = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffArrays = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined;
3592  
3593      /*istanbul ignore end*/var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3594  
3595      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3596  
3597      /*istanbul ignore end*/var /*istanbul ignore start*/_character = __webpack_require__(2) /*istanbul ignore end*/;
3598  
3599      var /*istanbul ignore start*/_word = __webpack_require__(3) /*istanbul ignore end*/;
3600  
3601      var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
3602  
3603      var /*istanbul ignore start*/_sentence = __webpack_require__(6) /*istanbul ignore end*/;
3604  
3605      var /*istanbul ignore start*/_css = __webpack_require__(7) /*istanbul ignore end*/;
3606  
3607      var /*istanbul ignore start*/_json = __webpack_require__(8) /*istanbul ignore end*/;
3608  
3609      var /*istanbul ignore start*/_array = __webpack_require__(9) /*istanbul ignore end*/;
3610  
3611      var /*istanbul ignore start*/_apply = __webpack_require__(10) /*istanbul ignore end*/;
3612  
3613      var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
3614  
3615      var /*istanbul ignore start*/_merge = __webpack_require__(13) /*istanbul ignore end*/;
3616  
3617      var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/;
3618  
3619      var /*istanbul ignore start*/_dmp = __webpack_require__(16) /*istanbul ignore end*/;
3620  
3621      var /*istanbul ignore start*/_xml = __webpack_require__(17) /*istanbul ignore end*/;
3622  
3623      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3624  
3625      /* See LICENSE file for terms of use */
3626  
3627      /*
3628       * Text diff implementation.
3629       *
3630       * This library supports the following APIS:
3631       * JsDiff.diffChars: Character by character diff
3632       * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
3633       * JsDiff.diffLines: Line based diff
3634       *
3635       * JsDiff.diffCss: Diff targeted at CSS content
3636       *
3637       * These methods are based on the implementation proposed in
3638       * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
3639       * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
3640       */
3641      exports. /*istanbul ignore end*/Diff = _base2['default'];
3642      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars;
3643      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords;
3644      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace;
3645      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines;
3646      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines;
3647      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences;
3648      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss;
3649      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson;
3650      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffArrays = _array.diffArrays;
3651      /*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch;
3652      /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch;
3653      /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch;
3654      /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch;
3655      /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches;
3656      /*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch;
3657      /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = _merge.merge;
3658      /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP;
3659      /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML;
3660      /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize;
3661      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJEaWZmIiwiZGlmZkNoYXJzIiwiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImRpZmZTZW50ZW5jZXMiLCJkaWZmQ3NzIiwiZGlmZkpzb24iLCJkaWZmQXJyYXlzIiwic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwiYXBwbHlQYXRjaCIsImFwcGx5UGF0Y2hlcyIsInBhcnNlUGF0Y2giLCJtZXJnZSIsImNvbnZlcnRDaGFuZ2VzVG9ETVAiLCJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2Fub25pY2FsaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozt1QkFnQkE7Ozs7dUJBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFqQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O2dDQWtDRUEsSTt5REFFQUMsUzt5REFDQUMsUzt5REFDQUMsa0I7eURBQ0FDLFM7eURBQ0FDLGdCO3lEQUNBQyxhO3lEQUVBQyxPO3lEQUNBQyxRO3lEQUVBQyxVO3lEQUVBQyxlO3lEQUNBQyxtQjt5REFDQUMsVzt5REFDQUMsVTt5REFDQUMsWTt5REFDQUMsVTt5REFDQUMsSzt5REFDQUMsbUI7eURBQ0FDLG1CO3lEQUNBQyxZIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU2VlIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMgb2YgdXNlICovXG5cbi8qXG4gKiBUZXh0IGRpZmYgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQVBJUzpcbiAqIEpzRGlmZi5kaWZmQ2hhcnM6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgZGlmZlxuICogSnNEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBKc0RpZmYuZGlmZkxpbmVzOiBMaW5lIGJhc2VkIGRpZmZcbiAqXG4gKiBKc0RpZmYuZGlmZkNzczogRGlmZiB0YXJnZXRlZCBhdCBDU1MgY29udGVudFxuICpcbiAqIFRoZXNlIG1ldGhvZHMgYXJlIGJhc2VkIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm9wb3NlZCBpblxuICogXCJBbiBPKE5EKSBEaWZmZXJlbmNlIEFsZ29yaXRobSBhbmQgaXRzIFZhcmlhdGlvbnNcIiAoTXllcnMsIDE5ODYpLlxuICogaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS40LjY5MjdcbiAqL1xuaW1wb3J0IERpZmYgZnJvbSAnLi9kaWZmL2Jhc2UnO1xuaW1wb3J0IHtkaWZmQ2hhcnN9IGZyb20gJy4vZGlmZi9jaGFyYWN0ZXInO1xuaW1wb3J0IHtkaWZmV29yZHMsIGRpZmZXb3Jkc1dpdGhTcGFjZX0gZnJvbSAnLi9kaWZmL3dvcmQnO1xuaW1wb3J0IHtkaWZmTGluZXMsIGRpZmZUcmltbWVkTGluZXN9IGZyb20gJy4vZGlmZi9saW5lJztcbmltcG9ydCB7ZGlmZlNlbnRlbmNlc30gZnJvbSAnLi9kaWZmL3NlbnRlbmNlJztcblxuaW1wb3J0IHtkaWZmQ3NzfSBmcm9tICcuL2RpZmYvY3NzJztcbmltcG9ydCB7ZGlmZkpzb24sIGNhbm9uaWNhbGl6ZX0gZnJvbSAnLi9kaWZmL2pzb24nO1xuXG5pbXBvcnQge2RpZmZBcnJheXN9IGZyb20gJy4vZGlmZi9hcnJheSc7XG5cbmltcG9ydCB7YXBwbHlQYXRjaCwgYXBwbHlQYXRjaGVzfSBmcm9tICcuL3BhdGNoL2FwcGx5JztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXRjaC9wYXJzZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICcuL3BhdGNoL21lcmdlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgZGlmZkFycmF5cyxcblxuICBzdHJ1Y3R1cmVkUGF0Y2gsXG4gIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsXG4gIGNyZWF0ZVBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iXX0=
3662  
3663  
3664  /***/ }),
3665  /* 1 */
3666  /***/ (function(module, exports) {
3667  
3668      /*istanbul ignore start*/'use strict';
3669  
3670      exports.__esModule = true;
3671      exports['default'] = /*istanbul ignore end*/Diff;
3672  	function Diff() {}
3673  
3674      Diff.prototype = {
3675        /*istanbul ignore start*/ /*istanbul ignore end*/diff: function diff(oldString, newString) {
3676          /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
3677  
3678          var callback = options.callback;
3679          if (typeof options === 'function') {
3680            callback = options;
3681            options = {};
3682          }
3683          this.options = options;
3684  
3685          var self = this;
3686  
3687  	    function done(value) {
3688            if (callback) {
3689              setTimeout(function () {
3690                callback(undefined, value);
3691              }, 0);
3692              return true;
3693            } else {
3694              return value;
3695            }
3696          }
3697  
3698          // Allow subclasses to massage the input prior to running
3699          oldString = this.castInput(oldString);
3700          newString = this.castInput(newString);
3701  
3702          oldString = this.removeEmpty(this.tokenize(oldString));
3703          newString = this.removeEmpty(this.tokenize(newString));
3704  
3705          var newLen = newString.length,
3706              oldLen = oldString.length;
3707          var editLength = 1;
3708          var maxEditLength = newLen + oldLen;
3709          var bestPath = [{ newPos: -1, components: [] }];
3710  
3711          // Seed editLength = 0, i.e. the content starts with the same values
3712          var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
3713          if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
3714            // Identity per the equality and tokenizer
3715            return done([{ value: this.join(newString), count: newString.length }]);
3716          }
3717  
3718          // Main worker method. checks all permutations of a given edit length for acceptance.
3719  	    function execEditLength() {
3720            for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
3721              var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
3722              var addPath = bestPath[diagonalPath - 1],
3723                  removePath = bestPath[diagonalPath + 1],
3724                  _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
3725              if (addPath) {
3726                // No one else is going to attempt to use this value, clear it
3727                bestPath[diagonalPath - 1] = undefined;
3728              }
3729  
3730              var canAdd = addPath && addPath.newPos + 1 < newLen,
3731                  canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
3732              if (!canAdd && !canRemove) {
3733                // If this path is a terminal then prune
3734                bestPath[diagonalPath] = undefined;
3735                continue;
3736              }
3737  
3738              // Select the diagonal that we want to branch from. We select the prior
3739              // path whose position in the new string is the farthest from the origin
3740              // and does not pass the bounds of the diff graph
3741              if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
3742                basePath = clonePath(removePath);
3743                self.pushComponent(basePath.components, undefined, true);
3744              } else {
3745                basePath = addPath; // No need to clone, we've pulled it from the list
3746                basePath.newPos++;
3747                self.pushComponent(basePath.components, true, undefined);
3748              }
3749  
3750              _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
3751  
3752              // If we have hit the end of both strings, then we are done
3753              if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
3754                return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
3755              } else {
3756                // Otherwise track this path as a potential candidate and continue.
3757                bestPath[diagonalPath] = basePath;
3758              }
3759            }
3760  
3761            editLength++;
3762          }
3763  
3764          // Performs the length of edit iteration. Is a bit fugly as this has to support the
3765          // sync and async mode which is never fun. Loops over execEditLength until a value
3766          // is produced.
3767          if (callback) {
3768            (function exec() {
3769              setTimeout(function () {
3770                // This should not happen, but we want to be safe.
3771                /* istanbul ignore next */
3772                if (editLength > maxEditLength) {
3773                  return callback();
3774                }
3775  
3776                if (!execEditLength()) {
3777                  exec();
3778                }
3779              }, 0);
3780            })();
3781          } else {
3782            while (editLength <= maxEditLength) {
3783              var ret = execEditLength();
3784              if (ret) {
3785                return ret;
3786              }
3787            }
3788          }
3789        },
3790        /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) {
3791          var last = components[components.length - 1];
3792          if (last && last.added === added && last.removed === removed) {
3793            // We need to clone here as the component clone operation is just
3794            // as shallow array clone
3795            components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };
3796          } else {
3797            components.push({ count: 1, added: added, removed: removed });
3798          }
3799        },
3800        /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
3801          var newLen = newString.length,
3802              oldLen = oldString.length,
3803              newPos = basePath.newPos,
3804              oldPos = newPos - diagonalPath,
3805              commonCount = 0;
3806          while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
3807            newPos++;
3808            oldPos++;
3809            commonCount++;
3810          }
3811  
3812          if (commonCount) {
3813            basePath.components.push({ count: commonCount });
3814          }
3815  
3816          basePath.newPos = newPos;
3817          return oldPos;
3818        },
3819        /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) {
3820          if (this.options.comparator) {
3821            return this.options.comparator(left, right);
3822          } else {
3823            return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
3824          }
3825        },
3826        /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) {
3827          var ret = [];
3828          for (var i = 0; i < array.length; i++) {
3829            if (array[i]) {
3830              ret.push(array[i]);
3831            }
3832          }
3833          return ret;
3834        },
3835        /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) {
3836          return value;
3837        },
3838        /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) {
3839          return value.split('');
3840        },
3841        /*istanbul ignore start*/ /*istanbul ignore end*/join: function join(chars) {
3842          return chars.join('');
3843        }
3844      };
3845  
3846  	function buildValues(diff, components, newString, oldString, useLongestToken) {
3847        var componentPos = 0,
3848            componentLen = components.length,
3849            newPos = 0,
3850            oldPos = 0;
3851  
3852        for (; componentPos < componentLen; componentPos++) {
3853          var component = components[componentPos];
3854          if (!component.removed) {
3855            if (!component.added && useLongestToken) {
3856              var value = newString.slice(newPos, newPos + component.count);
3857              value = value.map(function (value, i) {
3858                var oldValue = oldString[oldPos + i];
3859                return oldValue.length > value.length ? oldValue : value;
3860              });
3861  
3862              component.value = diff.join(value);
3863            } else {
3864              component.value = diff.join(newString.slice(newPos, newPos + component.count));
3865            }
3866            newPos += component.count;
3867  
3868            // Common case
3869            if (!component.added) {
3870              oldPos += component.count;
3871            }
3872          } else {
3873            component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
3874            oldPos += component.count;
3875  
3876            // Reverse add and remove so removes are output first to match common convention
3877            // The diffing algorithm is tied to add then remove output and this is the simplest
3878            // route to get the desired output with minimal overhead.
3879            if (componentPos && components[componentPos - 1].added) {
3880              var tmp = components[componentPos - 1];
3881              components[componentPos - 1] = components[componentPos];
3882              components[componentPos] = tmp;
3883            }
3884          }
3885        }
3886  
3887        // Special case handle for when one terminal is ignored (i.e. whitespace).
3888        // For this case we merge the terminal into the prior string and drop the change.
3889        // This is only available for string mode.
3890        var lastComponent = components[componentLen - 1];
3891        if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
3892          components[componentLen - 2].value += lastComponent.value;
3893          components.pop();
3894        }
3895  
3896        return components;
3897      }
3898  
3899  	function clonePath(path) {
3900        return { newPos: path.newPos, components: path.components.slice(0) };
3901      }
3902      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsImJlc3RQYXRoIiwibmV3UG9zIiwiY29tcG9uZW50cyIsIm9sZFBvcyIsImV4dHJhY3RDb21tb24iLCJqb2luIiwiY291bnQiLCJleGVjRWRpdExlbmd0aCIsImRpYWdvbmFsUGF0aCIsImJhc2VQYXRoIiwiYWRkUGF0aCIsInJlbW92ZVBhdGgiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjbG9uZVBhdGgiLCJwdXNoQ29tcG9uZW50IiwiYnVpbGRWYWx1ZXMiLCJ1c2VMb25nZXN0VG9rZW4iLCJleGVjIiwicmV0IiwiYWRkZWQiLCJyZW1vdmVkIiwibGFzdCIsInB1c2giLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJzcGxpdCIsImNoYXJzIiwiY29tcG9uZW50UG9zIiwiY29tcG9uZW50TGVuIiwiY29tcG9uZW50Iiwic2xpY2UiLCJtYXAiLCJvbGRWYWx1ZSIsInRtcCIsImxhc3RDb21wb25lbnQiLCJwb3AiLCJwYXRoIl0sIm1hcHBpbmdzIjoiOzs7NENBQXdCQSxJO0FBQVQsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsS0FBS0MsU0FBTCxHQUFpQjtBQUFBLG1EQUNmQyxJQURlLGdCQUNWQyxTQURVLEVBQ0NDLFNBREQsRUFDMEI7QUFBQSx3REFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUN2QyxRQUFJQyxXQUFXRCxRQUFRQyxRQUF2QjtBQUNBLFFBQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsaUJBQVdELE9BQVg7QUFDQUEsZ0JBQVUsRUFBVjtBQUNEO0FBQ0QsU0FBS0EsT0FBTCxHQUFlQSxPQUFmOztBQUVBLFFBQUlFLE9BQU8sSUFBWDs7QUFFQSxhQUFTQyxJQUFULENBQWNDLEtBQWQsRUFBcUI7QUFDbkIsVUFBSUgsUUFBSixFQUFjO0FBQ1pJLG1CQUFXLFlBQVc7QUFBRUosbUJBQVNLLFNBQVQsRUFBb0JGLEtBQXBCO0FBQTZCLFNBQXJELEVBQXVELENBQXZEO0FBQ0EsZUFBTyxJQUFQO0FBQ0QsT0FIRCxNQUdPO0FBQ0wsZUFBT0EsS0FBUDtBQUNEO0FBQ0Y7O0FBRUQ7QUFDQU4sZ0JBQVksS0FBS1MsU0FBTCxDQUFlVCxTQUFmLENBQVo7QUFDQUMsZ0JBQVksS0FBS1EsU0FBTCxDQUFlUixTQUFmLENBQVo7O0FBRUFELGdCQUFZLEtBQUtVLFdBQUwsQ0FBaUIsS0FBS0MsUUFBTCxDQUFjWCxTQUFkLENBQWpCLENBQVo7QUFDQUMsZ0JBQVksS0FBS1MsV0FBTCxDQUFpQixLQUFLQyxRQUFMLENBQWNWLFNBQWQsQ0FBakIsQ0FBWjs7QUFFQSxRQUFJVyxTQUFTWCxVQUFVWSxNQUF2QjtBQUFBLFFBQStCQyxTQUFTZCxVQUFVYSxNQUFsRDtBQUNBLFFBQUlFLGFBQWEsQ0FBakI7QUFDQSxRQUFJQyxnQkFBZ0JKLFNBQVNFLE1BQTdCO0FBQ0EsUUFBSUcsV0FBVyxDQUFDLEVBQUVDLFFBQVEsQ0FBQyxDQUFYLEVBQWNDLFlBQVksRUFBMUIsRUFBRCxDQUFmOztBQUVBO0FBQ0EsUUFBSUMsU0FBUyxLQUFLQyxhQUFMLENBQW1CSixTQUFTLENBQVQsQ0FBbkIsRUFBZ0NoQixTQUFoQyxFQUEyQ0QsU0FBM0MsRUFBc0QsQ0FBdEQsQ0FBYjtBQUNBLFFBQUlpQixTQUFTLENBQVQsRUFBWUMsTUFBWixHQUFxQixDQUFyQixJQUEwQk4sTUFBMUIsSUFBb0NRLFNBQVMsQ0FBVCxJQUFjTixNQUF0RCxFQUE4RDtBQUM1RDtBQUNBLGFBQU9ULEtBQUssQ0FBQyxFQUFDQyxPQUFPLEtBQUtnQixJQUFMLENBQVVyQixTQUFWLENBQVIsRUFBOEJzQixPQUFPdEIsVUFBVVksTUFBL0MsRUFBRCxDQUFMLENBQVA7QUFDRDs7QUFFRDtBQUNBLGFBQVNXLGNBQVQsR0FBMEI7QUFDeEIsV0FBSyxJQUFJQyxlQUFlLENBQUMsQ0FBRCxHQUFLVixVQUE3QixFQUF5Q1UsZ0JBQWdCVixVQUF6RCxFQUFxRVUsZ0JBQWdCLENBQXJGLEVBQXdGO0FBQ3RGLFlBQUlDLDBDQUFKO0FBQ0EsWUFBSUMsVUFBVVYsU0FBU1EsZUFBZSxDQUF4QixDQUFkO0FBQUEsWUFDSUcsYUFBYVgsU0FBU1EsZUFBZSxDQUF4QixDQURqQjtBQUFBLFlBRUlMLFVBQVMsQ0FBQ1EsYUFBYUEsV0FBV1YsTUFBeEIsR0FBaUMsQ0FBbEMsSUFBdUNPLFlBRnBEO0FBR0EsWUFBSUUsT0FBSixFQUFhO0FBQ1g7QUFDQVYsbUJBQVNRLGVBQWUsQ0FBeEIsSUFBNkJqQixTQUE3QjtBQUNEOztBQUVELFlBQUlxQixTQUFTRixXQUFXQSxRQUFRVCxNQUFSLEdBQWlCLENBQWpCLEdBQXFCTixNQUE3QztBQUFBLFlBQ0lrQixZQUFZRixjQUFjLEtBQUtSLE9BQW5CLElBQTZCQSxVQUFTTixNQUR0RDtBQUVBLFlBQUksQ0FBQ2UsTUFBRCxJQUFXLENBQUNDLFNBQWhCLEVBQTJCO0FBQ3pCO0FBQ0FiLG1CQUFTUSxZQUFULElBQXlCakIsU0FBekI7QUFDQTtBQUNEOztBQUVEO0FBQ0E7QUFDQTtBQUNBLFlBQUksQ0FBQ3FCLE1BQUQsSUFBWUMsYUFBYUgsUUFBUVQsTUFBUixHQUFpQlUsV0FBV1YsTUFBekQsRUFBa0U7QUFDaEVRLHFCQUFXSyxVQUFVSCxVQUFWLENBQVg7QUFDQXhCLGVBQUs0QixhQUFMLENBQW1CTixTQUFTUCxVQUE1QixFQUF3Q1gsU0FBeEMsRUFBbUQsSUFBbkQ7QUFDRCxTQUhELE1BR087QUFDTGtCLHFCQUFXQyxPQUFYLENBREssQ0FDaUI7QUFDdEJELG1CQUFTUixNQUFUO0FBQ0FkLGVBQUs0QixhQUFMLENBQW1CTixTQUFTUCxVQUE1QixFQUF3QyxJQUF4QyxFQUE4Q1gsU0FBOUM7QUFDRDs7QUFFRFksa0JBQVNoQixLQUFLaUIsYUFBTCxDQUFtQkssUUFBbkIsRUFBNkJ6QixTQUE3QixFQUF3Q0QsU0FBeEMsRUFBbUR5QixZQUFuRCxDQUFUOztBQUVBO0FBQ0EsWUFBSUMsU0FBU1IsTUFBVCxHQUFrQixDQUFsQixJQUF1Qk4sTUFBdkIsSUFBaUNRLFVBQVMsQ0FBVCxJQUFjTixNQUFuRCxFQUEyRDtBQUN6RCxpQkFBT1QsS0FBSzRCLFlBQVk3QixJQUFaLEVBQWtCc0IsU0FBU1AsVUFBM0IsRUFBdUNsQixTQUF2QyxFQUFrREQsU0FBbEQsRUFBNkRJLEtBQUs4QixlQUFsRSxDQUFMLENBQVA7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBakIsbUJBQVNRLFlBQVQsSUFBeUJDLFFBQXpCO0FBQ0Q7QUFDRjs7QUFFRFg7QUFDRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxRQUFJWixRQUFKLEVBQWM7QUFDWCxnQkFBU2dDLElBQVQsR0FBZ0I7QUFDZjVCLG1CQUFXLFlBQVc7QUFDcEI7QUFDQTtBQUNBLGNBQUlRLGFBQWFDLGFBQWpCLEVBQWdDO0FBQzlCLG1CQUFPYixVQUFQO0FBQ0Q7O0FBRUQsY0FBSSxDQUFDcUIsZ0JBQUwsRUFBdUI7QUFDckJXO0FBQ0Q7QUFDRixTQVZELEVBVUcsQ0FWSDtBQVdELE9BWkEsR0FBRDtBQWFELEtBZEQsTUFjTztBQUNMLGFBQU9wQixjQUFjQyxhQUFyQixFQUFvQztBQUNsQyxZQUFJb0IsTUFBTVosZ0JBQVY7QUFDQSxZQUFJWSxHQUFKLEVBQVM7QUFDUCxpQkFBT0EsR0FBUDtBQUNEO0FBQ0Y7QUFDRjtBQUNGLEdBOUdjO0FBQUEsbURBZ0hmSixhQWhIZSx5QkFnSERiLFVBaEhDLEVBZ0hXa0IsS0FoSFgsRUFnSGtCQyxPQWhIbEIsRUFnSDJCO0FBQ3hDLFFBQUlDLE9BQU9wQixXQUFXQSxXQUFXTixNQUFYLEdBQW9CLENBQS9CLENBQVg7QUFDQSxRQUFJMEIsUUFBUUEsS0FBS0YsS0FBTCxLQUFlQSxLQUF2QixJQUFnQ0UsS0FBS0QsT0FBTCxLQUFpQkEsT0FBckQsRUFBOEQ7QUFDNUQ7QUFDQTtBQUNBbkIsaUJBQVdBLFdBQVdOLE1BQVgsR0FBb0IsQ0FBL0IsSUFBb0MsRUFBQ1UsT0FBT2dCLEtBQUtoQixLQUFMLEdBQWEsQ0FBckIsRUFBd0JjLE9BQU9BLEtBQS9CLEVBQXNDQyxTQUFTQSxPQUEvQyxFQUFwQztBQUNELEtBSkQsTUFJTztBQUNMbkIsaUJBQVdxQixJQUFYLENBQWdCLEVBQUNqQixPQUFPLENBQVIsRUFBV2MsT0FBT0EsS0FBbEIsRUFBeUJDLFNBQVNBLE9BQWxDLEVBQWhCO0FBQ0Q7QUFDRixHQXpIYztBQUFBLG1EQTBIZmpCLGFBMUhlLHlCQTBIREssUUExSEMsRUEwSFN6QixTQTFIVCxFQTBIb0JELFNBMUhwQixFQTBIK0J5QixZQTFIL0IsRUEwSDZDO0FBQzFELFFBQUliLFNBQVNYLFVBQVVZLE1BQXZCO0FBQUEsUUFDSUMsU0FBU2QsVUFBVWEsTUFEdkI7QUFBQSxRQUVJSyxTQUFTUSxTQUFTUixNQUZ0QjtBQUFBLFFBR0lFLFNBQVNGLFNBQVNPLFlBSHRCO0FBQUEsUUFLSWdCLGNBQWMsQ0FMbEI7QUFNQSxXQUFPdkIsU0FBUyxDQUFULEdBQWFOLE1BQWIsSUFBdUJRLFNBQVMsQ0FBVCxHQUFhTixNQUFwQyxJQUE4QyxLQUFLNEIsTUFBTCxDQUFZekMsVUFBVWlCLFNBQVMsQ0FBbkIsQ0FBWixFQUFtQ2xCLFVBQVVvQixTQUFTLENBQW5CLENBQW5DLENBQXJELEVBQWdIO0FBQzlHRjtBQUNBRTtBQUNBcUI7QUFDRDs7QUFFRCxRQUFJQSxXQUFKLEVBQWlCO0FBQ2ZmLGVBQVNQLFVBQVQsQ0FBb0JxQixJQUFwQixDQUF5QixFQUFDakIsT0FBT2tCLFdBQVIsRUFBekI7QUFDRDs7QUFFRGYsYUFBU1IsTUFBVCxHQUFrQkEsTUFBbEI7QUFDQSxXQUFPRSxNQUFQO0FBQ0QsR0E3SWM7QUFBQSxtREErSWZzQixNQS9JZSxrQkErSVJDLElBL0lRLEVBK0lGQyxLQS9JRSxFQStJSztBQUNsQixRQUFJLEtBQUsxQyxPQUFMLENBQWEyQyxVQUFqQixFQUE2QjtBQUMzQixhQUFPLEtBQUszQyxPQUFMLENBQWEyQyxVQUFiLENBQXdCRixJQUF4QixFQUE4QkMsS0FBOUIsQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU9ELFNBQVNDLEtBQVQsSUFDRCxLQUFLMUMsT0FBTCxDQUFhNEMsVUFBYixJQUEyQkgsS0FBS0ksV0FBTCxPQUF1QkgsTUFBTUcsV0FBTixFQUR4RDtBQUVEO0FBQ0YsR0F0SmM7QUFBQSxtREF1SmZyQyxXQXZKZSx1QkF1SkhzQyxLQXZKRyxFQXVKSTtBQUNqQixRQUFJWixNQUFNLEVBQVY7QUFDQSxTQUFLLElBQUlhLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTW5DLE1BQTFCLEVBQWtDb0MsR0FBbEMsRUFBdUM7QUFDckMsVUFBSUQsTUFBTUMsQ0FBTixDQUFKLEVBQWM7QUFDWmIsWUFBSUksSUFBSixDQUFTUSxNQUFNQyxDQUFOLENBQVQ7QUFDRDtBQUNGO0FBQ0QsV0FBT2IsR0FBUDtBQUNELEdBL0pjO0FBQUEsbURBZ0tmM0IsU0FoS2UscUJBZ0tMSCxLQWhLSyxFQWdLRTtBQUNmLFdBQU9BLEtBQVA7QUFDRCxHQWxLYztBQUFBLG1EQW1LZkssUUFuS2Usb0JBbUtOTCxLQW5LTSxFQW1LQztBQUNkLFdBQU9BLE1BQU00QyxLQUFOLENBQVksRUFBWixDQUFQO0FBQ0QsR0FyS2M7QUFBQSxtREFzS2Y1QixJQXRLZSxnQkFzS1Y2QixLQXRLVSxFQXNLSDtBQUNWLFdBQU9BLE1BQU03QixJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0Q7QUF4S2MsQ0FBakI7O0FBMktBLFNBQVNXLFdBQVQsQ0FBcUJsQyxJQUFyQixFQUEyQm9CLFVBQTNCLEVBQXVDbEIsU0FBdkMsRUFBa0RELFNBQWxELEVBQTZEa0MsZUFBN0QsRUFBOEU7QUFDNUUsTUFBSWtCLGVBQWUsQ0FBbkI7QUFBQSxNQUNJQyxlQUFlbEMsV0FBV04sTUFEOUI7QUFBQSxNQUVJSyxTQUFTLENBRmI7QUFBQSxNQUdJRSxTQUFTLENBSGI7O0FBS0EsU0FBT2dDLGVBQWVDLFlBQXRCLEVBQW9DRCxjQUFwQyxFQUFvRDtBQUNsRCxRQUFJRSxZQUFZbkMsV0FBV2lDLFlBQVgsQ0FBaEI7QUFDQSxRQUFJLENBQUNFLFVBQVVoQixPQUFmLEVBQXdCO0FBQ3RCLFVBQUksQ0FBQ2dCLFVBQVVqQixLQUFYLElBQW9CSCxlQUF4QixFQUF5QztBQUN2QyxZQUFJNUIsUUFBUUwsVUFBVXNELEtBQVYsQ0FBZ0JyQyxNQUFoQixFQUF3QkEsU0FBU29DLFVBQVUvQixLQUEzQyxDQUFaO0FBQ0FqQixnQkFBUUEsTUFBTWtELEdBQU4sQ0FBVSxVQUFTbEQsS0FBVCxFQUFnQjJDLENBQWhCLEVBQW1CO0FBQ25DLGNBQUlRLFdBQVd6RCxVQUFVb0IsU0FBUzZCLENBQW5CLENBQWY7QUFDQSxpQkFBT1EsU0FBUzVDLE1BQVQsR0FBa0JQLE1BQU1PLE1BQXhCLEdBQWlDNEMsUUFBakMsR0FBNENuRCxLQUFuRDtBQUNELFNBSE8sQ0FBUjs7QUFLQWdELGtCQUFVaEQsS0FBVixHQUFrQlAsS0FBS3VCLElBQUwsQ0FBVWhCLEtBQVYsQ0FBbEI7QUFDRCxPQVJELE1BUU87QUFDTGdELGtCQUFVaEQsS0FBVixHQUFrQlAsS0FBS3VCLElBQUwsQ0FBVXJCLFVBQVVzRCxLQUFWLENBQWdCckMsTUFBaEIsRUFBd0JBLFNBQVNvQyxVQUFVL0IsS0FBM0MsQ0FBVixDQUFsQjtBQUNEO0FBQ0RMLGdCQUFVb0MsVUFBVS9CLEtBQXBCOztBQUVBO0FBQ0EsVUFBSSxDQUFDK0IsVUFBVWpCLEtBQWYsRUFBc0I7QUFDcEJqQixrQkFBVWtDLFVBQVUvQixLQUFwQjtBQUNEO0FBQ0YsS0FsQkQsTUFrQk87QUFDTCtCLGdCQUFVaEQsS0FBVixHQUFrQlAsS0FBS3VCLElBQUwsQ0FBVXRCLFVBQVV1RCxLQUFWLENBQWdCbkMsTUFBaEIsRUFBd0JBLFNBQVNrQyxVQUFVL0IsS0FBM0MsQ0FBVixDQUFsQjtBQUNBSCxnQkFBVWtDLFVBQVUvQixLQUFwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFJNkIsZ0JBQWdCakMsV0FBV2lDLGVBQWUsQ0FBMUIsRUFBNkJmLEtBQWpELEVBQXdEO0FBQ3RELFlBQUlxQixNQUFNdkMsV0FBV2lDLGVBQWUsQ0FBMUIsQ0FBVjtBQUNBakMsbUJBQVdpQyxlQUFlLENBQTFCLElBQStCakMsV0FBV2lDLFlBQVgsQ0FBL0I7QUFDQWpDLG1CQUFXaUMsWUFBWCxJQUEyQk0sR0FBM0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsTUFBSUMsZ0JBQWdCeEMsV0FBV2tDLGVBQWUsQ0FBMUIsQ0FBcEI7QUFDQSxNQUFJQSxlQUFlLENBQWYsSUFDRyxPQUFPTSxjQUFjckQsS0FBckIsS0FBK0IsUUFEbEMsS0FFSXFELGNBQWN0QixLQUFkLElBQXVCc0IsY0FBY3JCLE9BRnpDLEtBR0d2QyxLQUFLMkMsTUFBTCxDQUFZLEVBQVosRUFBZ0JpQixjQUFjckQsS0FBOUIsQ0FIUCxFQUc2QztBQUMzQ2EsZUFBV2tDLGVBQWUsQ0FBMUIsRUFBNkIvQyxLQUE3QixJQUFzQ3FELGNBQWNyRCxLQUFwRDtBQUNBYSxlQUFXeUMsR0FBWDtBQUNEOztBQUVELFNBQU96QyxVQUFQO0FBQ0Q7O0FBRUQsU0FBU1ksU0FBVCxDQUFtQjhCLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sRUFBRTNDLFFBQVEyQyxLQUFLM0MsTUFBZixFQUF1QkMsWUFBWTBDLEtBQUsxQyxVQUFMLENBQWdCb0MsS0FBaEIsQ0FBc0IsQ0FBdEIsQ0FBbkMsRUFBUDtBQUNEIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaWZmKCkge31cblxuRGlmZi5wcm90b3R5cGUgPSB7XG4gIGRpZmYob2xkU3RyaW5nLCBuZXdTdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2sodW5kZWZpbmVkLCB2YWx1ZSk7IH0sIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIHRvIG1hc3NhZ2UgdGhlIGlucHV0IHByaW9yIHRvIHJ1bm5pbmdcbiAgICBvbGRTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChvbGRTdHJpbmcpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMuY2FzdElucHV0KG5ld1N0cmluZyk7XG5cbiAgICBvbGRTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUob2xkU3RyaW5nKSk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG5ld1N0cmluZykpO1xuXG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGg7XG4gICAgbGV0IGVkaXRMZW5ndGggPSAxO1xuICAgIGxldCBtYXhFZGl0TGVuZ3RoID0gbmV3TGVuICsgb2xkTGVuO1xuICAgIGxldCBiZXN0UGF0aCA9IFt7IG5ld1BvczogLTEsIGNvbXBvbmVudHM6IFtdIH1dO1xuXG4gICAgLy8gU2VlZCBlZGl0TGVuZ3RoID0gMCwgaS5lLiB0aGUgY29udGVudCBzdGFydHMgd2l0aCB0aGUgc2FtZSB2YWx1ZXNcbiAgICBsZXQgb2xkUG9zID0gdGhpcy5leHRyYWN0Q29tbW9uKGJlc3RQYXRoWzBdLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgMCk7XG4gICAgaWYgKGJlc3RQYXRoWzBdLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAvLyBJZGVudGl0eSBwZXIgdGhlIGVxdWFsaXR5IGFuZCB0b2tlbml6ZXJcbiAgICAgIHJldHVybiBkb25lKFt7dmFsdWU6IHRoaXMuam9pbihuZXdTdHJpbmcpLCBjb3VudDogbmV3U3RyaW5nLmxlbmd0aH1dKTtcbiAgICB9XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKGxldCBkaWFnb25hbFBhdGggPSAtMSAqIGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCA8PSBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggKz0gMikge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sXG4gICAgICAgICAgICBvbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgIGlmIChhZGRQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbixcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQb3MgJiYgb2xkUG9zIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICBpZiAoIWNhbkFkZCB8fCAoY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpKSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoOyAgIC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gYmUgc2FmZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodFxuICAgICAgICB8fCAodGhpcy5vcHRpb25zLmlnbm9yZUNhc2UgJiYgbGVmdC50b0xvd2VyQ2FzZSgpID09PSByaWdodC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9LFxuICBqb2luKGNoYXJzKSB7XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4odmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgfVxuICAgICAgbmV3UG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gQ29tbW9uIGNhc2VcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkKSB7XG4gICAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihvbGRTdHJpbmcuc2xpY2Uob2xkUG9zLCBvbGRQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkIChpLmUuIHdoaXRlc3BhY2UpLlxuICAvLyBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZSB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgLy8gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBmb3Igc3RyaW5nIG1vZGUuXG4gIGxldCBsYXN0Q29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAxXTtcbiAgaWYgKGNvbXBvbmVudExlbiA+IDFcbiAgICAgICYmIHR5cGVvZiBsYXN0Q29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iXX0=
3903  
3904  
3905  /***/ }),
3906  /* 2 */
3907  /***/ (function(module, exports, __webpack_require__) {
3908  
3909      /*istanbul ignore start*/'use strict';
3910  
3911      exports.__esModule = true;
3912      exports.characterDiff = undefined;
3913      exports. /*istanbul ignore end*/diffChars = diffChars;
3914  
3915      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3916  
3917      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3918  
3919  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3920  
3921      /*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
3922  	function diffChars(oldStr, newStr, options) {
3923        return characterDiff.diff(oldStr, newStr, options);
3924      }
3925      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJkaWZmQ2hhcnMiLCJjaGFyYWN0ZXJEaWZmIiwib2xkU3RyIiwibmV3U3RyIiwib3B0aW9ucyIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBR2dCQSxTLEdBQUFBLFM7O0FBSGhCOzs7Ozs7dUJBRU8sSUFBTUMseUZBQWdCLHdFQUF0QjtBQUNBLFNBQVNELFNBQVQsQ0FBbUJFLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsT0FBbkMsRUFBNEM7QUFBRSxTQUFPSCxjQUFjSSxJQUFkLENBQW1CSCxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLE9BQW5DLENBQVA7QUFBcUQiLCJmaWxlIjoiY2hhcmFjdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19
3926  
3927  
3928  /***/ }),
3929  /* 3 */
3930  /***/ (function(module, exports, __webpack_require__) {
3931  
3932      /*istanbul ignore start*/'use strict';
3933  
3934      exports.__esModule = true;
3935      exports.wordDiff = undefined;
3936      exports. /*istanbul ignore end*/diffWords = diffWords;
3937      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace;
3938  
3939      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3940  
3941      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3942  
3943      /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
3944  
3945      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3946  
3947      /*istanbul ignore end*/ // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
3948      //
3949      // Ranges and exceptions:
3950      // Latin-1 Supplement, 0080–00FF
3951      //  - U+00D7  × Multiplication sign
3952      //  - U+00F7  ÷ Division sign
3953      // Latin Extended-A, 0100–017F
3954      // Latin Extended-B, 0180–024F
3955      // IPA Extensions, 0250–02AF
3956      // Spacing Modifier Letters, 02B0–02FF
3957      //  - U+02C7  ˇ &#711;  Caron
3958      //  - U+02D8  ˘ &#728;  Breve
3959      //  - U+02D9  ˙ &#729;  Dot Above
3960      //  - U+02DA  ˚ &#730;  Ring Above
3961      //  - U+02DB  ˛ &#731;  Ogonek
3962      //  - U+02DC  ˜ &#732;  Small Tilde
3963      //  - U+02DD  ˝ &#733;  Double Acute Accent
3964      // Latin Extended Additional, 1E00–1EFF
3965      var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
3966  
3967      var reWhitespace = /\S/;
3968  
3969      var wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
3970      wordDiff.equals = function (left, right) {
3971        if (this.options.ignoreCase) {
3972          left = left.toLowerCase();
3973          right = right.toLowerCase();
3974        }
3975        return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
3976      };
3977      wordDiff.tokenize = function (value) {
3978        var tokens = value.split(/(\s+|\b)/);
3979  
3980        // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
3981        for (var i = 0; i < tokens.length - 1; i++) {
3982          // If we have an empty string in the next field and we have only word chars before and after, merge
3983          if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
3984            tokens[i] += tokens[i + 2];
3985            tokens.splice(i + 1, 2);
3986            i--;
3987          }
3988        }
3989  
3990        return tokens;
3991      };
3992  
3993  	function diffWords(oldStr, newStr, options) {
3994        options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(options, { ignoreWhitespace: true });
3995        return wordDiff.diff(oldStr, newStr, options);
3996      }
3997  
3998  	function diffWordsWithSpace(oldStr, newStr, options) {
3999        return wordDiff.diff(oldStr, newStr, options);
4000      }
4001      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsIm9wdGlvbnMiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJpZ25vcmVXaGl0ZXNwYWNlIiwidGVzdCIsInRva2VuaXplIiwidmFsdWUiLCJ0b2tlbnMiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzcGxpY2UiLCJvbGRTdHIiLCJuZXdTdHIiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7O2dDQW1EZ0JBLFMsR0FBQUEsUzt5REFLQUMsa0IsR0FBQUEsa0I7O0FBeERoQjs7Ozt1QkFDQTs7Ozt3QkFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxvQkFBb0IsK0RBQTFCOztBQUVBLElBQU1DLGVBQWUsSUFBckI7O0FBRU8sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1BBLFNBQVNDLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsV0FBT0EsS0FBS0ksV0FBTCxFQUFQO0FBQ0FILFlBQVFBLE1BQU1HLFdBQU4sRUFBUjtBQUNEO0FBQ0QsU0FBT0osU0FBU0MsS0FBVCxJQUFtQixLQUFLQyxPQUFMLENBQWFHLGdCQUFiLElBQWlDLENBQUNSLGFBQWFTLElBQWIsQ0FBa0JOLElBQWxCLENBQWxDLElBQTZELENBQUNILGFBQWFTLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDtBQU9BSCxTQUFTUyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsU0FBU0QsTUFBTUUsS0FBTixDQUFZLFVBQVosQ0FBYjs7QUFFQTtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixPQUFPRyxNQUFQLEdBQWdCLENBQXBDLEVBQXVDRCxHQUF2QyxFQUE0QztBQUMxQztBQUNBLFFBQUksQ0FBQ0YsT0FBT0UsSUFBSSxDQUFYLENBQUQsSUFBa0JGLE9BQU9FLElBQUksQ0FBWCxDQUFsQixJQUNLZixrQkFBa0JVLElBQWxCLENBQXVCRyxPQUFPRSxDQUFQLENBQXZCLENBREwsSUFFS2Ysa0JBQWtCVSxJQUFsQixDQUF1QkcsT0FBT0UsSUFBSSxDQUFYLENBQXZCLENBRlQsRUFFZ0Q7QUFDOUNGLGFBQU9FLENBQVAsS0FBYUYsT0FBT0UsSUFBSSxDQUFYLENBQWI7QUFDQUYsYUFBT0ksTUFBUCxDQUFjRixJQUFJLENBQWxCLEVBQXFCLENBQXJCO0FBQ0FBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FoQkQ7O0FBa0JPLFNBQVNmLFNBQVQsQ0FBbUJvQixNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNiLE9BQW5DLEVBQTRDO0FBQ2pEQSxZQUFVLDhFQUFnQkEsT0FBaEIsRUFBeUIsRUFBQ0csa0JBQWtCLElBQW5CLEVBQXpCLENBQVY7QUFDQSxTQUFPUCxTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEOztBQUVNLFNBQVNQLGtCQUFULENBQTRCbUIsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDYixPQUE1QyxFQUFxRDtBQUMxRCxTQUFPSixTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEIiwiZmlsZSI6IndvcmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODDigJMwMEZGXG4vLyAgLSBVKzAwRDcgIMOXIE11bHRpcGxpY2F0aW9uIHNpZ25cbi8vICAtIFUrMDBGNyAgw7cgRGl2aXNpb24gc2lnblxuLy8gTGF0aW4gRXh0ZW5kZWQtQSwgMDEwMOKAkzAxN0Zcbi8vIExhdGluIEV4dGVuZGVkLUIsIDAxODDigJMwMjRGXG4vLyBJUEEgRXh0ZW5zaW9ucywgMDI1MOKAkzAyQUZcbi8vIFNwYWNpbmcgTW9kaWZpZXIgTGV0dGVycywgMDJCMOKAkzAyRkZcbi8vICAtIFUrMDJDNyAgy4cgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICDLmCAmIzcyODsgIEJyZXZlXG4vLyAgLSBVKzAyRDkgIMuZICYjNzI5OyAgRG90IEFib3ZlXG4vLyAgLSBVKzAyREEgIMuaICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICDLmyAmIzczMTsgIE9nb25la1xuLy8gIC0gVSswMkRDICDLnCAmIzczMjsgIFNtYWxsIFRpbGRlXG4vLyAgLSBVKzAyREQgIMudICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMOKAkzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlKSB7XG4gICAgbGVmdCA9IGxlZnQudG9Mb3dlckNhc2UoKTtcbiAgICByaWdodCA9IHJpZ2h0LnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhcXHMrfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=
4002  
4003  
4004  /***/ }),
4005  /* 4 */
4006  /***/ (function(module, exports) {
4007  
4008      /*istanbul ignore start*/'use strict';
4009  
4010      exports.__esModule = true;
4011      exports. /*istanbul ignore end*/generateOptions = generateOptions;
4012  	function generateOptions(options, defaults) {
4013        if (typeof options === 'function') {
4014          defaults.callback = options;
4015        } else if (options) {
4016          for (var name in options) {
4017            /* istanbul ignore else */
4018            if (options.hasOwnProperty(name)) {
4019              defaults[name] = options[name];
4020            }
4021          }
4022        }
4023        return defaults;
4024      }
4025      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsZSxHQUFBQSxlO0FBQVQsU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsYUFBU0MsUUFBVCxHQUFvQkYsT0FBcEI7QUFDRCxHQUZELE1BRU8sSUFBSUEsT0FBSixFQUFhO0FBQ2xCLFNBQUssSUFBSUcsSUFBVCxJQUFpQkgsT0FBakIsRUFBMEI7QUFDeEI7QUFDQSxVQUFJQSxRQUFRSSxjQUFSLENBQXVCRCxJQUF2QixDQUFKLEVBQWtDO0FBQ2hDRixpQkFBU0UsSUFBVCxJQUFpQkgsUUFBUUcsSUFBUixDQUFqQjtBQUNEO0FBQ0Y7QUFDRjtBQUNELFNBQU9GLFFBQVA7QUFDRCIsImZpbGUiOiJwYXJhbXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=
4026  
4027  
4028  /***/ }),
4029  /* 5 */
4030  /***/ (function(module, exports, __webpack_require__) {
4031  
4032      /*istanbul ignore start*/'use strict';
4033  
4034      exports.__esModule = true;
4035      exports.lineDiff = undefined;
4036      exports. /*istanbul ignore end*/diffLines = diffLines;
4037      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines;
4038  
4039      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
4040  
4041      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
4042  
4043      /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
4044  
4045      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4046  
4047      /*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
4048      lineDiff.tokenize = function (value) {
4049        var retLines = [],
4050            linesAndNewlines = value.split(/(\n|\r\n)/);
4051  
4052        // Ignore the final empty token that occurs if the string ends with a new line
4053        if (!linesAndNewlines[linesAndNewlines.length - 1]) {
4054          linesAndNewlines.pop();
4055        }
4056  
4057        // Merge the content and line separators into single tokens
4058        for (var i = 0; i < linesAndNewlines.length; i++) {
4059          var line = linesAndNewlines[i];
4060  
4061          if (i % 2 && !this.options.newlineIsToken) {
4062            retLines[retLines.length - 1] += line;
4063          } else {
4064            if (this.options.ignoreWhitespace) {
4065              line = line.trim();
4066            }
4067            retLines.push(line);
4068          }
4069        }
4070  
4071        return retLines;
4072      };
4073  
4074  	function diffLines(oldStr, newStr, callback) {
4075        return lineDiff.diff(oldStr, newStr, callback);
4076      }
4077  	function diffTrimmedLines(oldStr, newStr, callback) {
4078        var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
4079        return lineDiff.diff(oldStr, newStr, options);
4080      }
4081      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImxpbmVEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBOEJnQkEsUyxHQUFBQSxTO3lEQUNBQyxnQixHQUFBQSxnQjs7QUEvQmhCOzs7O3VCQUNBOzs7O3VCQUVPLElBQU1DLCtFQUFXLHdFQUFqQjtBQUNQQSxTQUFTQyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsV0FBVyxFQUFmO0FBQUEsTUFDSUMsbUJBQW1CRixNQUFNRyxLQUFOLENBQVksV0FBWixDQUR2Qjs7QUFHQTtBQUNBLE1BQUksQ0FBQ0QsaUJBQWlCQSxpQkFBaUJFLE1BQWpCLEdBQTBCLENBQTNDLENBQUwsRUFBb0Q7QUFDbERGLHFCQUFpQkcsR0FBakI7QUFDRDs7QUFFRDtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSixpQkFBaUJFLE1BQXJDLEVBQTZDRSxHQUE3QyxFQUFrRDtBQUNoRCxRQUFJQyxPQUFPTCxpQkFBaUJJLENBQWpCLENBQVg7O0FBRUEsUUFBSUEsSUFBSSxDQUFKLElBQVMsQ0FBQyxLQUFLRSxPQUFMLENBQWFDLGNBQTNCLEVBQTJDO0FBQ3pDUixlQUFTQSxTQUFTRyxNQUFULEdBQWtCLENBQTNCLEtBQWlDRyxJQUFqQztBQUNELEtBRkQsTUFFTztBQUNMLFVBQUksS0FBS0MsT0FBTCxDQUFhRSxnQkFBakIsRUFBbUM7QUFDakNILGVBQU9BLEtBQUtJLElBQUwsRUFBUDtBQUNEO0FBQ0RWLGVBQVNXLElBQVQsQ0FBY0wsSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBeEJEOztBQTBCTyxTQUFTTCxTQUFULENBQW1CaUIsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxRQUFuQyxFQUE2QztBQUFFLFNBQU9qQixTQUFTa0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDtBQUNoRyxTQUFTbEIsZ0JBQVQsQ0FBMEJnQixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlQLFVBQVUsOEVBQWdCTyxRQUFoQixFQUEwQixFQUFDTCxrQkFBa0IsSUFBbkIsRUFBMUIsQ0FBZDtBQUNBLFNBQU9aLFNBQVNrQixJQUFULENBQWNILE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCTixPQUE5QixDQUFQO0FBQ0QiLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==
4082  
4083  
4084  /***/ }),
4085  /* 6 */
4086  /***/ (function(module, exports, __webpack_require__) {
4087  
4088      /*istanbul ignore start*/'use strict';
4089  
4090      exports.__esModule = true;
4091      exports.sentenceDiff = undefined;
4092      exports. /*istanbul ignore end*/diffSentences = diffSentences;
4093  
4094      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
4095  
4096      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
4097  
4098  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4099  
4100      /*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
4101      sentenceDiff.tokenize = function (value) {
4102        return value.split(/(\S.+?[.!?])(?=\s+|$)/);
4103      };
4104  
4105  	function diffSentences(oldStr, newStr, callback) {
4106        return sentenceDiff.diff(oldStr, newStr, callback);
4107      }
4108      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbImRpZmZTZW50ZW5jZXMiLCJzZW50ZW5jZURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBUWdCQSxhLEdBQUFBLGE7O0FBUmhCOzs7Ozs7dUJBR08sSUFBTUMsdUZBQWUsd0VBQXJCO0FBQ1BBLGFBQWFDLFFBQWIsR0FBd0IsVUFBU0MsS0FBVCxFQUFnQjtBQUN0QyxTQUFPQSxNQUFNQyxLQUFOLENBQVksdUJBQVosQ0FBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0osYUFBVCxDQUF1QkssTUFBdkIsRUFBK0JDLE1BQS9CLEVBQXVDQyxRQUF2QyxFQUFpRDtBQUFFLFNBQU9OLGFBQWFPLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsImZpbGUiOiJzZW50ZW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
4109  
4110  
4111  /***/ }),
4112  /* 7 */
4113  /***/ (function(module, exports, __webpack_require__) {
4114  
4115      /*istanbul ignore start*/'use strict';
4116  
4117      exports.__esModule = true;
4118      exports.cssDiff = undefined;
4119      exports. /*istanbul ignore end*/diffCss = diffCss;
4120  
4121      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
4122  
4123      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
4124  
4125  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4126  
4127      /*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
4128      cssDiff.tokenize = function (value) {
4129        return value.split(/([{}:;,]|\s+)/);
4130      };
4131  
4132  	function diffCss(oldStr, newStr, callback) {
4133        return cssDiff.diff(oldStr, newStr, callback);
4134      }
4135      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJkaWZmQ3NzIiwiY3NzRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsIm9sZFN0ciIsIm5ld1N0ciIsImNhbGxiYWNrIiwiZGlmZiJdLCJtYXBwaW5ncyI6Ijs7OztnQ0FPZ0JBLE8sR0FBQUEsTzs7QUFQaEI7Ozs7Ozt1QkFFTyxJQUFNQyw2RUFBVSx3RUFBaEI7QUFDUEEsUUFBUUMsUUFBUixHQUFtQixVQUFTQyxLQUFULEVBQWdCO0FBQ2pDLFNBQU9BLE1BQU1DLEtBQU4sQ0FBWSxlQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNKLE9BQVQsQ0FBaUJLLE1BQWpCLEVBQXlCQyxNQUF6QixFQUFpQ0MsUUFBakMsRUFBMkM7QUFBRSxTQUFPTixRQUFRTyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwiZmlsZSI6ImNzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjc3NEaWZmID0gbmV3IERpZmYoKTtcbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhbe306OyxdfFxccyspLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iXX0=
4136  
4137  
4138  /***/ }),
4139  /* 8 */
4140  /***/ (function(module, exports, __webpack_require__) {
4141  
4142      /*istanbul ignore start*/'use strict';
4143  
4144      exports.__esModule = true;
4145      exports.jsonDiff = undefined;
4146  
4147      var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4148  
4149      exports. /*istanbul ignore end*/diffJson = diffJson;
4150      /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize;
4151  
4152      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
4153  
4154      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
4155  
4156      /*istanbul ignore end*/var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
4157  
4158      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4159  
4160      /*istanbul ignore end*/var objectPrototypeToString = Object.prototype.toString;
4161  
4162      var jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
4163      // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
4164      // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
4165      jsonDiff.useLongestToken = true;
4166  
4167      jsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff /*istanbul ignore end*/.tokenize;
4168      jsonDiff.castInput = function (value) {
4169        /*istanbul ignore start*/var _options = /*istanbul ignore end*/this.options,
4170            undefinedReplacement = _options.undefinedReplacement,
4171            _options$stringifyRep = _options.stringifyReplacer,
4172            stringifyReplacer = _options$stringifyRep === undefined ? function (k, v) /*istanbul ignore start*/{
4173          return (/*istanbul ignore end*/typeof v === 'undefined' ? undefinedReplacement : v
4174          );
4175        } : _options$stringifyRep;
4176  
4177  
4178        return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');
4179      };
4180      jsonDiff.equals = function (left, right) {
4181        return (/*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'))
4182        );
4183      };
4184  
4185  	function diffJson(oldObj, newObj, options) {
4186        return jsonDiff.diff(oldObj, newObj, options);
4187      }
4188  
4189      // This function handles the presence of circular references by bailing out when encountering an
4190      // object that is already on the "stack" of items being processed. Accepts an optional replacer
4191  	function canonicalize(obj, stack, replacementStack, replacer, key) {
4192        stack = stack || [];
4193        replacementStack = replacementStack || [];
4194  
4195        if (replacer) {
4196          obj = replacer(key, obj);
4197        }
4198  
4199        var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
4200  
4201        for (i = 0; i < stack.length; i += 1) {
4202          if (stack[i] === obj) {
4203            return replacementStack[i];
4204          }
4205        }
4206  
4207        var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
4208  
4209        if ('[object Array]' === objectPrototypeToString.call(obj)) {
4210          stack.push(obj);
4211          canonicalizedObj = new Array(obj.length);
4212          replacementStack.push(canonicalizedObj);
4213          for (i = 0; i < obj.length; i += 1) {
4214            canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
4215          }
4216          stack.pop();
4217          replacementStack.pop();
4218          return canonicalizedObj;
4219        }
4220  
4221        if (obj && obj.toJSON) {
4222          obj = obj.toJSON();
4223        }
4224  
4225        if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
4226          stack.push(obj);
4227          canonicalizedObj = {};
4228          replacementStack.push(canonicalizedObj);
4229          var sortedKeys = [],
4230              _key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
4231          for (_key in obj) {
4232            /* istanbul ignore else */
4233            if (obj.hasOwnProperty(_key)) {
4234              sortedKeys.push(_key);
4235            }
4236          }
4237          sortedKeys.sort();
4238          for (i = 0; i < sortedKeys.length; i += 1) {
4239            _key = sortedKeys[i];
4240            canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
4241          }
4242          stack.pop();
4243          replacementStack.pop();
4244        } else {
4245          canonicalizedObj = obj;
4246        }
4247        return canonicalizedObj;
4248      }
4249      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsiZGlmZkpzb24iLCJjYW5vbmljYWxpemUiLCJvYmplY3RQcm90b3R5cGVUb1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwianNvbkRpZmYiLCJ1c2VMb25nZXN0VG9rZW4iLCJ0b2tlbml6ZSIsImNhc3RJbnB1dCIsInZhbHVlIiwib3B0aW9ucyIsInVuZGVmaW5lZFJlcGxhY2VtZW50Iiwic3RyaW5naWZ5UmVwbGFjZXIiLCJrIiwidiIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjYWxsIiwicmVwbGFjZSIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztnQ0FxQmdCQSxRLEdBQUFBLFE7eURBSUFDLFksR0FBQUEsWTs7QUF6QmhCOzs7O3VCQUNBOzs7O3VCQUVBLElBQU1DLDBCQUEwQkMsT0FBT0MsU0FBUCxDQUFpQkMsUUFBakQ7O0FBR08sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1A7QUFDQTtBQUNBQSxTQUFTQyxlQUFULEdBQTJCLElBQTNCOztBQUVBRCxTQUFTRSxRQUFULEdBQW9CLGdFQUFTQSxRQUE3QjtBQUNBRixTQUFTRyxTQUFULEdBQXFCLFVBQVNDLEtBQVQsRUFBZ0I7QUFBQSxpRUFDK0UsS0FBS0MsT0FEcEY7QUFBQSxNQUM1QkMsb0JBRDRCLFlBQzVCQSxvQkFENEI7QUFBQSx1Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSx5Q0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQ0FBVSxPQUFPQSxDQUFQ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QUFLVCxJQUFJLENBQVQsRUFBWUEsSUFBSU8sV0FBV04sTUFBM0IsRUFBbUNELEtBQUssQ0FBeEMsRUFBMkM7QUFDekNELGFBQU1RLFdBQVdQLENBQVgsQ0FBTjtBQUNBRSx1QkFBaUJILElBQWpCLElBQXdCN0IsYUFBYXlCLElBQUlJLElBQUosQ0FBYixFQUF1QkgsS0FBdkIsRUFBOEJDLGdCQUE5QixFQUFnREMsUUFBaEQsRUFBMERDLElBQTFELENBQXhCO0FBQ0Q7QUFDREgsVUFBTVMsR0FBTjtBQUNBUixxQkFBaUJRLEdBQWpCO0FBQ0QsR0FuQkQsTUFtQk87QUFDTEgsdUJBQW1CUCxHQUFuQjtBQUNEO0FBQ0QsU0FBT08sZ0JBQVA7QUFDRCIsImZpbGUiOiJqc29uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=
4250  
4251  
4252  /***/ }),
4253  /* 9 */
4254  /***/ (function(module, exports, __webpack_require__) {
4255  
4256      /*istanbul ignore start*/'use strict';
4257  
4258      exports.__esModule = true;
4259      exports.arrayDiff = undefined;
4260      exports. /*istanbul ignore end*/diffArrays = diffArrays;
4261  
4262      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
4263  
4264      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
4265  
4266  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4267  
4268      /*istanbul ignore end*/var arrayDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
4269      arrayDiff.tokenize = function (value) {
4270        return value.slice();
4271      };
4272      arrayDiff.join = arrayDiff.removeEmpty = function (value) {
4273        return value;
4274      };
4275  
4276  	function diffArrays(oldArr, newArr, callback) {
4277        return arrayDiff.diff(oldArr, newArr, callback);
4278      }
4279      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImRpZmZBcnJheXMiLCJhcnJheURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJvbGRBcnIiLCJuZXdBcnIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBVWdCQSxVLEdBQUFBLFU7O0FBVmhCOzs7Ozs7dUJBRU8sSUFBTUMsaUZBQVksd0VBQWxCO0FBQ1BBLFVBQVVDLFFBQVYsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUNuQyxTQUFPQSxNQUFNQyxLQUFOLEVBQVA7QUFDRCxDQUZEO0FBR0FILFVBQVVJLElBQVYsR0FBaUJKLFVBQVVLLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSCxVQUFULENBQW9CTyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1IsVUFBVVMsSUFBVixDQUFlSCxNQUFmLEVBQXVCQyxNQUF2QixFQUErQkMsUUFBL0IsQ0FBUDtBQUFrRCIsImZpbGUiOiJhcnJheS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBhcnJheURpZmYgPSBuZXcgRGlmZigpO1xuYXJyYXlEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKCk7XG59O1xuYXJyYXlEaWZmLmpvaW4gPSBhcnJheURpZmYucmVtb3ZlRW1wdHkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkFycmF5cyhvbGRBcnIsIG5ld0FyciwgY2FsbGJhY2spIHsgcmV0dXJuIGFycmF5RGlmZi5kaWZmKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjayk7IH1cbiJdfQ==
4280  
4281  
4282  /***/ }),
4283  /* 10 */
4284  /***/ (function(module, exports, __webpack_require__) {
4285  
4286      /*istanbul ignore start*/'use strict';
4287  
4288      exports.__esModule = true;
4289      exports. /*istanbul ignore end*/applyPatch = applyPatch;
4290      /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches;
4291  
4292      var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
4293  
4294      var /*istanbul ignore start*/_distanceIterator = __webpack_require__(12) /*istanbul ignore end*/;
4295  
4296      /*istanbul ignore start*/var _distanceIterator2 = _interopRequireDefault(_distanceIterator);
4297  
4298  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4299  
4300      /*istanbul ignore end*/function applyPatch(source, uniDiff) {
4301        /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
4302  
4303        if (typeof uniDiff === 'string') {
4304          uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
4305        }
4306  
4307        if (Array.isArray(uniDiff)) {
4308          if (uniDiff.length > 1) {
4309            throw new Error('applyPatch only works with a single input.');
4310          }
4311  
4312          uniDiff = uniDiff[0];
4313        }
4314  
4315        // Apply the diff to the input
4316        var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
4317            delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
4318            hunks = uniDiff.hunks,
4319            compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{
4320          return (/*istanbul ignore end*/line === patchContent
4321          );
4322        },
4323            errorCount = 0,
4324            fuzzFactor = options.fuzzFactor || 0,
4325            minLine = 0,
4326            offset = 0,
4327            removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
4328            addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
4329  
4330        /**
4331         * Checks if the hunk exactly fits on the provided location
4332         */
4333  	  function hunkFits(hunk, toPos) {
4334          for (var j = 0; j < hunk.lines.length; j++) {
4335            var line = hunk.lines[j],
4336                operation = line.length > 0 ? line[0] : ' ',
4337                content = line.length > 0 ? line.substr(1) : line;
4338  
4339            if (operation === ' ' || operation === '-') {
4340              // Context sanity check
4341              if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
4342                errorCount++;
4343  
4344                if (errorCount > fuzzFactor) {
4345                  return false;
4346                }
4347              }
4348              toPos++;
4349            }
4350          }
4351  
4352          return true;
4353        }
4354  
4355        // Search best fit offsets for each hunk based on the previous ones
4356        for (var i = 0; i < hunks.length; i++) {
4357          var hunk = hunks[i],
4358              maxLine = lines.length - hunk.oldLines,
4359              localOffset = 0,
4360              toPos = offset + hunk.oldStart - 1;
4361  
4362          var iterator = /*istanbul ignore start*/(0, _distanceIterator2['default']) /*istanbul ignore end*/(toPos, minLine, maxLine);
4363  
4364          for (; localOffset !== undefined; localOffset = iterator()) {
4365            if (hunkFits(hunk, toPos + localOffset)) {
4366              hunk.offset = offset += localOffset;
4367              break;
4368            }
4369          }
4370  
4371          if (localOffset === undefined) {
4372            return false;
4373          }
4374  
4375          // Set lower text limit to end of the current hunk, so next ones don't try
4376          // to fit over already patched text
4377          minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
4378        }
4379  
4380        // Apply patch hunks
4381        var diffOffset = 0;
4382        for (var _i = 0; _i < hunks.length; _i++) {
4383          var _hunk = hunks[_i],
4384              _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
4385          diffOffset += _hunk.newLines - _hunk.oldLines;
4386  
4387          if (_toPos < 0) {
4388            // Creating a new file
4389            _toPos = 0;
4390          }
4391  
4392          for (var j = 0; j < _hunk.lines.length; j++) {
4393            var line = _hunk.lines[j],
4394                operation = line.length > 0 ? line[0] : ' ',
4395                content = line.length > 0 ? line.substr(1) : line,
4396                delimiter = _hunk.linedelimiters[j];
4397  
4398            if (operation === ' ') {
4399              _toPos++;
4400            } else if (operation === '-') {
4401              lines.splice(_toPos, 1);
4402              delimiters.splice(_toPos, 1);
4403              /* istanbul ignore else */
4404            } else if (operation === '+') {
4405              lines.splice(_toPos, 0, content);
4406              delimiters.splice(_toPos, 0, delimiter);
4407              _toPos++;
4408            } else if (operation === '\\') {
4409              var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
4410              if (previousOperation === '+') {
4411                removeEOFNL = true;
4412              } else if (previousOperation === '-') {
4413                addEOFNL = true;
4414              }
4415            }
4416          }
4417        }
4418  
4419        // Handle EOFNL insertion/removal
4420        if (removeEOFNL) {
4421          while (!lines[lines.length - 1]) {
4422            lines.pop();
4423            delimiters.pop();
4424          }
4425        } else if (addEOFNL) {
4426          lines.push('');
4427          delimiters.push('\n');
4428        }
4429        for (var _k = 0; _k < lines.length - 1; _k++) {
4430          lines[_k] = lines[_k] + delimiters[_k];
4431        }
4432        return lines.join('');
4433      }
4434  
4435      // Wrapper that supports multiple file patches via callbacks.
4436  	function applyPatches(uniDiff, options) {
4437        if (typeof uniDiff === 'string') {
4438          uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
4439        }
4440  
4441        var currentIndex = 0;
4442  	  function processIndex() {
4443          var index = uniDiff[currentIndex++];
4444          if (!index) {
4445            return options.complete();
4446          }
4447  
4448          options.loadFile(index, function (err, data) {
4449            if (err) {
4450              return options.complete(err);
4451            }
4452  
4453            var updatedContent = applyPatch(data, index, options);
4454            options.patched(index, updatedContent, function (err) {
4455              if (err) {
4456                return options.complete(err);
4457              }
4458  
4459              processIndex();
4460            });
4461          });
4462        }
4463        processIndex();
4464      }
4465      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwiYXBwbHlQYXRjaGVzIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJFcnJvciIsImxpbmVzIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJodW5rcyIsImNvbXBhcmVMaW5lIiwibGluZU51bWJlciIsImxpbmUiLCJvcGVyYXRpb24iLCJwYXRjaENvbnRlbnQiLCJlcnJvckNvdW50IiwiZnV6ekZhY3RvciIsIm1pbkxpbmUiLCJvZmZzZXQiLCJyZW1vdmVFT0ZOTCIsImFkZEVPRk5MIiwiaHVua0ZpdHMiLCJodW5rIiwidG9Qb3MiLCJqIiwiY29udGVudCIsInN1YnN0ciIsImkiLCJtYXhMaW5lIiwib2xkTGluZXMiLCJsb2NhbE9mZnNldCIsIm9sZFN0YXJ0IiwiaXRlcmF0b3IiLCJ1bmRlZmluZWQiLCJkaWZmT2Zmc2V0IiwibmV3TGluZXMiLCJkZWxpbWl0ZXIiLCJsaW5lZGVsaW1pdGVycyIsInNwbGljZSIsInByZXZpb3VzT3BlcmF0aW9uIiwicG9wIiwicHVzaCIsIl9rIiwiam9pbiIsImN1cnJlbnRJbmRleCIsInByb2Nlc3NJbmRleCIsImluZGV4IiwiY29tcGxldGUiLCJsb2FkRmlsZSIsImVyciIsImRhdGEiLCJ1cGRhdGVkQ29udGVudCIsInBhdGNoZWQiXSwibWFwcGluZ3MiOiI7OztnQ0FHZ0JBLFUsR0FBQUEsVTt5REFvSUFDLFksR0FBQUEsWTs7QUF2SWhCOztBQUNBOzs7Ozs7dUJBRU8sU0FBU0QsVUFBVCxDQUFvQkUsTUFBcEIsRUFBNEJDLE9BQTVCLEVBQW1EO0FBQUEsc0RBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFDeEQsTUFBSSxPQUFPRCxPQUFQLEtBQW1CLFFBQXZCLEVBQWlDO0FBQy9CQSxjQUFVLHdFQUFXQSxPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRSxNQUFNQyxP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QUFZO0FBQ1YsYUFBTzlDLFFBQVErQyxRQUFSLEVBQVA7QUFDRDs7QUFFRC9DLFlBQVFnRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT2pELFFBQVErQyxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsaUJBQWlCdkQsV0FBV3NELElBQVgsRUFBaUJKLEtBQWpCLEVBQXdCOUMsT0FBeEIsQ0FBckI7QUFDQUEsY0FBUW9ELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9qRCxRQUFRK0MsUUFBUixDQUFpQkUsR0FBakIsQ0FBUDtBQUNEOztBQUVESjtBQUNELE9BTkQ7QUFPRCxLQWJEO0FBY0Q7QUFDREE7QUFDRCIsImZpbGUiOiJhcHBseS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGlmICh0b1BvcyA8IDApIHsgLy8gQ3JlYXRpbmcgYSBuZXcgZmlsZVxuICAgICAgdG9Qb3MgPSAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19
4466  
4467  
4468  /***/ }),
4469  /* 11 */
4470  /***/ (function(module, exports) {
4471  
4472      /*istanbul ignore start*/'use strict';
4473  
4474      exports.__esModule = true;
4475      exports. /*istanbul ignore end*/parsePatch = parsePatch;
4476  	function parsePatch(uniDiff) {
4477        /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4478  
4479        var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
4480            delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
4481            list = [],
4482            i = 0;
4483  
4484  	  function parseIndex() {
4485          var index = {};
4486          list.push(index);
4487  
4488          // Parse diff metadata
4489          while (i < diffstr.length) {
4490            var line = diffstr[i];
4491  
4492            // File header found, end parsing diff metadata
4493            if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
4494              break;
4495            }
4496  
4497            // Diff index
4498            var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
4499            if (header) {
4500              index.index = header[1];
4501            }
4502  
4503            i++;
4504          }
4505  
4506          // Parse file headers if they are defined. Unified diff requires them, but
4507          // there's no technical issues to have an isolated hunk without file header
4508          parseFileHeader(index);
4509          parseFileHeader(index);
4510  
4511          // Parse hunks
4512          index.hunks = [];
4513  
4514          while (i < diffstr.length) {
4515            var _line = diffstr[i];
4516  
4517            if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
4518              break;
4519            } else if (/^@@/.test(_line)) {
4520              index.hunks.push(parseHunk());
4521            } else if (_line && options.strict) {
4522              // Ignore unexpected content unless in strict mode
4523              throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
4524            } else {
4525              i++;
4526            }
4527          }
4528        }
4529  
4530        // Parses the --- and +++ headers, if none are found, no lines
4531        // are consumed.
4532  	  function parseFileHeader(index) {
4533          var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
4534          if (fileHeader) {
4535            var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
4536            var data = fileHeader[2].split('\t', 2);
4537            var fileName = data[0].replace(/\\\\/g, '\\');
4538            if (/^".*"$/.test(fileName)) {
4539              fileName = fileName.substr(1, fileName.length - 2);
4540            }
4541            index[keyPrefix + 'FileName'] = fileName;
4542            index[keyPrefix + 'Header'] = (data[1] || '').trim();
4543  
4544            i++;
4545          }
4546        }
4547  
4548        // Parses a hunk
4549        // This assumes that we are at the start of a hunk.
4550  	  function parseHunk() {
4551          var chunkHeaderIndex = i,
4552              chunkHeaderLine = diffstr[i++],
4553              chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
4554  
4555          var hunk = {
4556            oldStart: +chunkHeader[1],
4557            oldLines: +chunkHeader[2] || 1,
4558            newStart: +chunkHeader[3],
4559            newLines: +chunkHeader[4] || 1,
4560            lines: [],
4561            linedelimiters: []
4562          };
4563  
4564          var addCount = 0,
4565              removeCount = 0;
4566          for (; i < diffstr.length; i++) {
4567            // Lines starting with '---' could be mistaken for the "remove line" operation
4568            // But they could be the header for the next file. Therefore prune such cases out.
4569            if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
4570              break;
4571            }
4572            var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
4573  
4574            if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
4575              hunk.lines.push(diffstr[i]);
4576              hunk.linedelimiters.push(delimiters[i] || '\n');
4577  
4578              if (operation === '+') {
4579                addCount++;
4580              } else if (operation === '-') {
4581                removeCount++;
4582              } else if (operation === ' ') {
4583                addCount++;
4584                removeCount++;
4585              }
4586            } else {
4587              break;
4588            }
4589          }
4590  
4591          // Handle the empty block count case
4592          if (!addCount && hunk.newLines === 1) {
4593            hunk.newLines = 0;
4594          }
4595          if (!removeCount && hunk.oldLines === 1) {
4596            hunk.oldLines = 0;
4597          }
4598  
4599          // Perform optional sanity checking
4600          if (options.strict) {
4601            if (addCount !== hunk.newLines) {
4602              throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
4603            }
4604            if (removeCount !== hunk.oldLines) {
4605              throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
4606            }
4607          }
4608  
4609          return hunk;
4610        }
4611  
4612        while (i < diffstr.length) {
4613          parseIndex();
4614        }
4615  
4616        return list;
4617      }
4618      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsVSxHQUFBQSxVO0FBQVQsU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQSxzREFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUNoRCxNQUFJQyxVQUFVRixRQUFRRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLGFBQWFKLFFBQVFLLEtBQVIsQ0FBYyxzQkFBZCxLQUF5QyxFQUQxRDtBQUFBLE1BRUlDLE9BQU8sRUFGWDtBQUFBLE1BR0lDLElBQUksQ0FIUjs7QUFLQSxXQUFTQyxVQUFULEdBQXNCO0FBQ3BCLFFBQUlDLFFBQVEsRUFBWjtBQUNBSCxTQUFLSSxJQUFMLENBQVVELEtBQVY7O0FBRUE7QUFDQSxXQUFPRixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6QixVQUFJQyxPQUFPVixRQUFR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QW9CO0FBQ2xCLFVBQUlxQixhQUFhUCxLQUFLSSxRQUF0QixFQUFnQztBQUM5QixjQUFNLElBQUlqQixLQUFKLENBQVUsc0RBQXNEVSxtQkFBbUIsQ0FBekUsQ0FBVixDQUFOO0FBQ0Q7QUFDRCxVQUFJVyxnQkFBZ0JSLEtBQUtFLFFBQXpCLEVBQW1DO0FBQ2pDLGNBQU0sSUFBSWYsS0FBSixDQUFVLHdEQUF3RFUsbUJBQW1CLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6Qkg7QUFDRDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgvXihcXC1cXC1cXC18XFwrXFwrXFwrfEBAKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gRGlmZiBpbmRleFxuICAgICAgbGV0IGhlYWRlciA9ICgvXig/OkluZGV4OnxkaWZmKD86IC1yIFxcdyspKylcXHMrKC4rPylcXHMqJC8pLmV4ZWMobGluZSk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGluZGV4LmluZGV4ID0gaGVhZGVyWzFdO1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgZmlsZSBoZWFkZXJzIGlmIHRoZXkgYXJlIGRlZmluZWQuIFVuaWZpZWQgZGlmZiByZXF1aXJlcyB0aGVtLCBidXRcbiAgICAvLyB0aGVyZSdzIG5vIHRlY2huaWNhbCBpc3N1ZXMgdG8gaGF2ZSBhbiBpc29sYXRlZCBodW5rIHdpdGhvdXQgZmlsZSBoZWFkZXJcbiAgICBwYXJzZUZpbGVIZWFkZXIoaW5kZXgpO1xuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBodW5rc1xuICAgIGluZGV4Lmh1bmtzID0gW107XG5cbiAgICB3aGlsZSAoaSA8IGRpZmZzdHIubGVuZ3RoKSB7XG4gICAgICBsZXQgbGluZSA9IGRpZmZzdHJbaV07XG5cbiAgICAgIGlmICgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoL15AQC8udGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKC9eXCIuKlwiJC8udGVzdChmaWxlTmFtZSkpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMSwgZmlsZU5hbWUubGVuZ3RoIC0gMik7XG4gICAgICB9XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnRmlsZU5hbWUnXSA9IGZpbGVOYW1lO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gKGRhdGFbMV0gfHwgJycpLnRyaW0oKTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogK2NodW5rSGVhZGVyWzJdIHx8IDEsXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6ICtjaHVua0hlYWRlcls0XSB8fCAxLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgbGluZWRlbGltaXRlcnM6IFtdXG4gICAgfTtcblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggJy0tLScgY291bGQgYmUgbWlzdGFrZW4gZm9yIHRoZSBcInJlbW92ZSBsaW5lXCIgb3BlcmF0aW9uXG4gICAgICAvLyBCdXQgdGhleSBjb3VsZCBiZSB0aGUgaGVhZGVyIGZvciB0aGUgbmV4dCBmaWxlLiBUaGVyZWZvcmUgcHJ1bmUgc3VjaCBjYXNlcyBvdXQuXG4gICAgICBpZiAoZGlmZnN0cltpXS5pbmRleE9mKCctLS0gJykgPT09IDBcbiAgICAgICAgICAgICYmIChpICsgMiA8IGRpZmZzdHIubGVuZ3RoKVxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMV0uaW5kZXhPZignKysrICcpID09PSAwXG4gICAgICAgICAgICAmJiBkaWZmc3RyW2kgKyAyXS5pbmRleE9mKCdAQCcpID09PSAwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsZXQgb3BlcmF0aW9uID0gKGRpZmZzdHJbaV0ubGVuZ3RoID09IDAgJiYgaSAhPSAoZGlmZnN0ci5sZW5ndGggLSAxKSkgPyAnICcgOiBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuICAgICAgICBodW5rLmxpbmVkZWxpbWl0ZXJzLnB1c2goZGVsaW1pdGVyc1tpXSB8fCAnXFxuJyk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgYmxvY2sgY291bnQgY2FzZVxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuICAgIGlmICghcmVtb3ZlQ291bnQgJiYgaHVuay5vbGRMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5vbGRMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBvcHRpb25hbCBzYW5pdHkgY2hlY2tpbmdcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIGlmIChhZGRDb3VudCAhPT0gaHVuay5uZXdMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZGVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1vdmVDb3VudCAhPT0gaHVuay5vbGRMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW92ZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodW5rO1xuICB9XG5cbiAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgIHBhcnNlSW5kZXgoKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuIl19
4619  
4620  
4621  /***/ }),
4622  /* 12 */
4623  /***/ (function(module, exports) {
4624  
4625      /*istanbul ignore start*/"use strict";
4626  
4627      exports.__esModule = true;
4628  
4629      exports["default"] = /*istanbul ignore end*/function (start, minLine, maxLine) {
4630        var wantForward = true,
4631            backwardExhausted = false,
4632            forwardExhausted = false,
4633            localOffset = 1;
4634  
4635        return function iterator() {
4636          if (wantForward && !forwardExhausted) {
4637            if (backwardExhausted) {
4638              localOffset++;
4639            } else {
4640              wantForward = false;
4641            }
4642  
4643            // Check if trying to fit beyond text length, and if not, check it fits
4644            // after offset location (or desired location on first iteration)
4645            if (start + localOffset <= maxLine) {
4646              return localOffset;
4647            }
4648  
4649            forwardExhausted = true;
4650          }
4651  
4652          if (!backwardExhausted) {
4653            if (!forwardExhausted) {
4654              wantForward = true;
4655            }
4656  
4657            // Check if trying to fit before text beginning, and if not, check it fits
4658            // before offset location
4659            if (minLine <= start - localOffset) {
4660              return -localOffset++;
4661            }
4662  
4663            backwardExhausted = true;
4664            return iterator();
4665          }
4666  
4667          // We tried to fit hunk before text beginning and beyond text length, then
4668          // hunk can't fit on the text. Return undefined
4669        };
4670      };
4671      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7NENBR2UsVUFBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLGNBQWMsSUFBbEI7QUFBQSxNQUNJQyxvQkFBb0IsS0FEeEI7QUFBQSxNQUVJQyxtQkFBbUIsS0FGdkI7QUFBQSxNQUdJQyxjQUFjLENBSGxCOztBQUtBLFNBQU8sU0FBU0MsUUFBVCxHQUFvQjtBQUN6QixRQUFJSixlQUFlLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkU7QUFDRCxPQUZELE1BRU87QUFDTEgsc0JBQWMsS0FBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJSCxRQUFRTSxXQUFSLElBQXVCSixPQUEzQixFQUFvQztBQUNsQyxlQUFPSSxXQUFQO0FBQ0Q7O0FBRURELHlCQUFtQixJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsc0JBQWMsSUFBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJRixXQUFXRCxRQUFRTSxXQUF2QixFQUFvQztBQUNsQyxlQUFPLENBQUNBLGFBQVI7QUFDRDs7QUFFREYsMEJBQW9CLElBQXBCO0FBQ0EsYUFBT0csVUFBUDtBQUNEOztBQUVEO0FBQ0E7QUFDRCxHQWxDRDtBQW1DRCxDIiwiZmlsZSI6ImRpc3RhbmNlLWl0ZXJhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=
4672  
4673  
4674  /***/ }),
4675  /* 13 */
4676  /***/ (function(module, exports, __webpack_require__) {
4677  
4678      /*istanbul ignore start*/'use strict';
4679  
4680      exports.__esModule = true;
4681      exports. /*istanbul ignore end*/calcLineCount = calcLineCount;
4682      /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = merge;
4683  
4684      var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/;
4685  
4686      var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
4687  
4688      var /*istanbul ignore start*/_array = __webpack_require__(15) /*istanbul ignore end*/;
4689  
4690      /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
4691  
4692      /*istanbul ignore end*/function calcLineCount(hunk) {
4693        /*istanbul ignore start*/var _calcOldNewLineCount = /*istanbul ignore end*/calcOldNewLineCount(hunk.lines),
4694            oldLines = _calcOldNewLineCount.oldLines,
4695            newLines = _calcOldNewLineCount.newLines;
4696  
4697        if (oldLines !== undefined) {
4698          hunk.oldLines = oldLines;
4699        } else {
4700          delete hunk.oldLines;
4701        }
4702  
4703        if (newLines !== undefined) {
4704          hunk.newLines = newLines;
4705        } else {
4706          delete hunk.newLines;
4707        }
4708      }
4709  
4710  	function merge(mine, theirs, base) {
4711        mine = loadPatch(mine, base);
4712        theirs = loadPatch(theirs, base);
4713  
4714        var ret = {};
4715  
4716        // For index we just let it pass through as it doesn't have any necessary meaning.
4717        // Leaving sanity checks on this to the API consumer that may know more about the
4718        // meaning in their own context.
4719        if (mine.index || theirs.index) {
4720          ret.index = mine.index || theirs.index;
4721        }
4722  
4723        if (mine.newFileName || theirs.newFileName) {
4724          if (!fileNameChanged(mine)) {
4725            // No header or no change in ours, use theirs (and ours if theirs does not exist)
4726            ret.oldFileName = theirs.oldFileName || mine.oldFileName;
4727            ret.newFileName = theirs.newFileName || mine.newFileName;
4728            ret.oldHeader = theirs.oldHeader || mine.oldHeader;
4729            ret.newHeader = theirs.newHeader || mine.newHeader;
4730          } else if (!fileNameChanged(theirs)) {
4731            // No header or no change in theirs, use ours
4732            ret.oldFileName = mine.oldFileName;
4733            ret.newFileName = mine.newFileName;
4734            ret.oldHeader = mine.oldHeader;
4735            ret.newHeader = mine.newHeader;
4736          } else {
4737            // Both changed... figure it out
4738            ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
4739            ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
4740            ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
4741            ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
4742          }
4743        }
4744  
4745        ret.hunks = [];
4746  
4747        var mineIndex = 0,
4748            theirsIndex = 0,
4749            mineOffset = 0,
4750            theirsOffset = 0;
4751  
4752        while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
4753          var mineCurrent = mine.hunks[mineIndex] || { oldStart: Infinity },
4754              theirsCurrent = theirs.hunks[theirsIndex] || { oldStart: Infinity };
4755  
4756          if (hunkBefore(mineCurrent, theirsCurrent)) {
4757            // This patch does not overlap with any of the others, yay.
4758            ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
4759            mineIndex++;
4760            theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
4761          } else if (hunkBefore(theirsCurrent, mineCurrent)) {
4762            // This patch does not overlap with any of the others, yay.
4763            ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
4764            theirsIndex++;
4765            mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
4766          } else {
4767            // Overlap, merge as best we can
4768            var mergedHunk = {
4769              oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
4770              oldLines: 0,
4771              newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
4772              newLines: 0,
4773              lines: []
4774            };
4775            mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
4776            theirsIndex++;
4777            mineIndex++;
4778  
4779            ret.hunks.push(mergedHunk);
4780          }
4781        }
4782  
4783        return ret;
4784      }
4785  
4786  	function loadPatch(param, base) {
4787        if (typeof param === 'string') {
4788          if (/^@@/m.test(param) || /^Index:/m.test(param)) {
4789            return (/*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(param)[0]
4790            );
4791          }
4792  
4793          if (!base) {
4794            throw new Error('Must provide a base reference or pass in a patch');
4795          }
4796          return (/*istanbul ignore start*/(0, _create.structuredPatch) /*istanbul ignore end*/(undefined, undefined, base, param)
4797          );
4798        }
4799  
4800        return param;
4801      }
4802  
4803  	function fileNameChanged(patch) {
4804        return patch.newFileName && patch.newFileName !== patch.oldFileName;
4805      }
4806  
4807  	function selectField(index, mine, theirs) {
4808        if (mine === theirs) {
4809          return mine;
4810        } else {
4811          index.conflict = true;
4812          return { mine: mine, theirs: theirs };
4813        }
4814      }
4815  
4816  	function hunkBefore(test, check) {
4817        return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
4818      }
4819  
4820  	function cloneHunk(hunk, offset) {
4821        return {
4822          oldStart: hunk.oldStart, oldLines: hunk.oldLines,
4823          newStart: hunk.newStart + offset, newLines: hunk.newLines,
4824          lines: hunk.lines
4825        };
4826      }
4827  
4828  	function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
4829        // This will generally result in a conflicted hunk, but there are cases where the context
4830        // is the only overlap where we can successfully merge the content here.
4831        var mine = { offset: mineOffset, lines: mineLines, index: 0 },
4832            their = { offset: theirOffset, lines: theirLines, index: 0 };
4833  
4834        // Handle any leading content
4835        insertLeading(hunk, mine, their);
4836        insertLeading(hunk, their, mine);
4837  
4838        // Now in the overlap content. Scan through and select the best changes from each.
4839        while (mine.index < mine.lines.length && their.index < their.lines.length) {
4840          var mineCurrent = mine.lines[mine.index],
4841              theirCurrent = their.lines[their.index];
4842  
4843          if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
4844            // Both modified ...
4845            mutualChange(hunk, mine, their);
4846          } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
4847            /*istanbul ignore start*/var _hunk$lines;
4848  
4849            /*istanbul ignore end*/ // Mine inserted
4850            /*istanbul ignore start*/(_hunk$lines = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(mine)));
4851          } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
4852            /*istanbul ignore start*/var _hunk$lines2;
4853  
4854            /*istanbul ignore end*/ // Theirs inserted
4855            /*istanbul ignore start*/(_hunk$lines2 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(their)));
4856          } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
4857            // Mine removed or edited
4858            removal(hunk, mine, their);
4859          } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
4860            // Their removed or edited
4861            removal(hunk, their, mine, true);
4862          } else if (mineCurrent === theirCurrent) {
4863            // Context identity
4864            hunk.lines.push(mineCurrent);
4865            mine.index++;
4866            their.index++;
4867          } else {
4868            // Context mismatch
4869            conflict(hunk, collectChange(mine), collectChange(their));
4870          }
4871        }
4872  
4873        // Now push anything that may be remaining
4874        insertTrailing(hunk, mine);
4875        insertTrailing(hunk, their);
4876  
4877        calcLineCount(hunk);
4878      }
4879  
4880  	function mutualChange(hunk, mine, their) {
4881        var myChanges = collectChange(mine),
4882            theirChanges = collectChange(their);
4883  
4884        if (allRemoves(myChanges) && allRemoves(theirChanges)) {
4885          // Special case for remove changes that are supersets of one another
4886          if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
4887            /*istanbul ignore start*/var _hunk$lines3;
4888  
4889            /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines3 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
4890            return;
4891          } else if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
4892            /*istanbul ignore start*/var _hunk$lines4;
4893  
4894            /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines4 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines4 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges));
4895            return;
4896          }
4897        } else if ( /*istanbul ignore start*/(0, _array.arrayEqual) /*istanbul ignore end*/(myChanges, theirChanges)) {
4898          /*istanbul ignore start*/var _hunk$lines5;
4899  
4900          /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines5 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines5 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
4901          return;
4902        }
4903  
4904        conflict(hunk, myChanges, theirChanges);
4905      }
4906  
4907  	function removal(hunk, mine, their, swap) {
4908        var myChanges = collectChange(mine),
4909            theirChanges = collectContext(their, myChanges);
4910        if (theirChanges.merged) {
4911          /*istanbul ignore start*/var _hunk$lines6;
4912  
4913          /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines6 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines6 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges.merged));
4914        } else {
4915          conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
4916        }
4917      }
4918  
4919  	function conflict(hunk, mine, their) {
4920        hunk.conflict = true;
4921        hunk.lines.push({
4922          conflict: true,
4923          mine: mine,
4924          theirs: their
4925        });
4926      }
4927  
4928  	function insertLeading(hunk, insert, their) {
4929        while (insert.offset < their.offset && insert.index < insert.lines.length) {
4930          var line = insert.lines[insert.index++];
4931          hunk.lines.push(line);
4932          insert.offset++;
4933        }
4934      }
4935  	function insertTrailing(hunk, insert) {
4936        while (insert.index < insert.lines.length) {
4937          var line = insert.lines[insert.index++];
4938          hunk.lines.push(line);
4939        }
4940      }
4941  
4942  	function collectChange(state) {
4943        var ret = [],
4944            operation = state.lines[state.index][0];
4945        while (state.index < state.lines.length) {
4946          var line = state.lines[state.index];
4947  
4948          // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
4949          if (operation === '-' && line[0] === '+') {
4950            operation = '+';
4951          }
4952  
4953          if (operation === line[0]) {
4954            ret.push(line);
4955            state.index++;
4956          } else {
4957            break;
4958          }
4959        }
4960  
4961        return ret;
4962      }
4963  	function collectContext(state, matchChanges) {
4964        var changes = [],
4965            merged = [],
4966            matchIndex = 0,
4967            contextChanges = false,
4968            conflicted = false;
4969        while (matchIndex < matchChanges.length && state.index < state.lines.length) {
4970          var change = state.lines[state.index],
4971              match = matchChanges[matchIndex];
4972  
4973          // Once we've hit our add, then we are done
4974          if (match[0] === '+') {
4975            break;
4976          }
4977  
4978          contextChanges = contextChanges || change[0] !== ' ';
4979  
4980          merged.push(match);
4981          matchIndex++;
4982  
4983          // Consume any additions in the other block as a conflict to attempt
4984          // to pull in the remaining context after this
4985          if (change[0] === '+') {
4986            conflicted = true;
4987  
4988            while (change[0] === '+') {
4989              changes.push(change);
4990              change = state.lines[++state.index];
4991            }
4992          }
4993  
4994          if (match.substr(1) === change.substr(1)) {
4995            changes.push(change);
4996            state.index++;
4997          } else {
4998            conflicted = true;
4999          }
5000        }
5001  
5002        if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
5003          conflicted = true;
5004        }
5005  
5006        if (conflicted) {
5007          return changes;
5008        }
5009  
5010        while (matchIndex < matchChanges.length) {
5011          merged.push(matchChanges[matchIndex++]);
5012        }
5013  
5014        return {
5015          merged: merged,
5016          changes: changes
5017        };
5018      }
5019  
5020  	function allRemoves(changes) {
5021        return changes.reduce(function (prev, change) {
5022          return prev && change[0] === '-';
5023        }, true);
5024      }
5025  	function skipRemoveSuperset(state, removeChanges, delta) {
5026        for (var i = 0; i < delta; i++) {
5027          var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
5028          if (state.lines[state.index + i] !== ' ' + changeContent) {
5029            return false;
5030          }
5031        }
5032  
5033        state.index += delta;
5034        return true;
5035      }
5036  
5037  	function calcOldNewLineCount(lines) {
5038        var oldLines = 0;
5039        var newLines = 0;
5040  
5041        lines.forEach(function (line) {
5042          if (typeof line !== 'string') {
5043            var myCount = calcOldNewLineCount(line.mine);
5044            var theirCount = calcOldNewLineCount(line.theirs);
5045  
5046            if (oldLines !== undefined) {
5047              if (myCount.oldLines === theirCount.oldLines) {
5048                oldLines += myCount.oldLines;
5049              } else {
5050                oldLines = undefined;
5051              }
5052            }
5053  
5054            if (newLines !== undefined) {
5055              if (myCount.newLines === theirCount.newLines) {
5056                newLines += myCount.newLines;
5057              } else {
5058                newLines = undefined;
5059              }
5060            }
5061          } else {
5062            if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
5063              newLines++;
5064            }
5065            if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
5066              oldLines++;
5067            }
5068          }
5069        });
5070  
5071        return { oldLines: oldLines, newLines: newLines };
5072      }
5073      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwibWVyZ2UiLCJodW5rIiwiY2FsY09sZE5ld0xpbmVDb3VudCIsImxpbmVzIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsInVuZGVmaW5lZCIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwiRXJyb3IiLCJwYXRjaCIsImNvbmZsaWN0IiwiY2hlY2siLCJvZmZzZXQiLCJtaW5lTGluZXMiLCJ0aGVpck9mZnNldCIsInRoZWlyTGluZXMiLCJ0aGVpciIsImluc2VydExlYWRpbmciLCJ0aGVpckN1cnJlbnQiLCJtdXR1YWxDaGFuZ2UiLCJjb2xsZWN0Q2hhbmdlIiwicmVtb3ZhbCIsImluc2VydFRyYWlsaW5nIiwibXlDaGFuZ2VzIiwidGhlaXJDaGFuZ2VzIiwiYWxsUmVtb3ZlcyIsInNraXBSZW1vdmVTdXBlcnNldCIsInN3YXAiLCJjb2xsZWN0Q29udGV4dCIsIm1lcmdlZCIsImluc2VydCIsImxpbmUiLCJzdGF0ZSIsIm9wZXJhdGlvbiIsIm1hdGNoQ2hhbmdlcyIsImNoYW5nZXMiLCJtYXRjaEluZGV4IiwiY29udGV4dENoYW5nZXMiLCJjb25mbGljdGVkIiwiY2hhbmdlIiwibWF0Y2giLCJzdWJzdHIiLCJyZWR1Y2UiLCJwcmV2IiwicmVtb3ZlQ2hhbmdlcyIsImRlbHRhIiwiaSIsImNoYW5nZUNvbnRlbnQiLCJmb3JFYWNoIiwibXlDb3VudCIsInRoZWlyQ291bnQiXSwibWFwcGluZ3MiOiI7OztnQ0FLZ0JBLGEsR0FBQUEsYTt5REFnQkFDLEssR0FBQUEsSzs7QUFyQmhCOztBQUNBOztBQUVBOzs7O3VCQUVPLFNBQVNELGFBQVQsQ0FBdUJFLElBQXZCLEVBQTZCO0FBQUEsNkVBQ0xDLG9CQUFvQkQsS0FBS0UsS0FBekIsQ0FESztBQUFBLE1BQzNCQyxRQUQyQix3QkFDM0JBLFFBRDJCO0FBQUEsTUFDakJDLFFBRGlCLHdCQUNqQkEsUUFEaUI7O0FBR2xDLE1BQUlELGFBQWFFLFNBQWpCLEVBQTRCO0FBQzFCTCxTQUFLRyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9ILEtBQUtHLFFBQVo7QUFDRDs7QUFFRCxNQUFJQyxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQkwsU0FBS0ksUUFBTCxHQUFnQkEsUUFBaEI7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPSixLQUFLSSxRQUFaO0FBQ0Q7QUFDRjs7QUFFTSxTQUFTTCxLQUFULENBQWVPLElBQWYsRUFBcUJDLE1BQXJCLEVBQTZCQyxJQUE3QixFQUFtQztBQUN4Q0YsU0FBT0csVUFBVUgsSUFBVixFQUFnQkUsSUFBaEIsQ0FBUDtBQUNBRCxXQUFTRSxVQUFVRixNQUFWLEVBQWtCQyxJQUFsQixDQUFUOztBQUVBLE1BQUlFLE1BQU0sRUFBVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFJSixLQUFLSyxLQUFMLElBQWNKLE9BQU9JLEtBQXpCLEVBQWdDO0FBQzlCRCxRQUFJQyxLQUFKLEdBQVlMLEtBQUtLLEtBQUwsSUFBY0osT0FBT0ksS0FBakM7QUFDRDs7QUFFRCxNQUFJTCxLQUFLTSxXQUFMLElBQW9CTCxPQUFPSyxXQUEvQixFQUE0QztBQUMxQyxRQUFJLENBQUNDLGdCQUFnQlAsSUFBaEIsQ0FBTCxF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Q0Q7QUFDRjs7QUFFRCxVQUFJRCxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJMEUsUUFBUTNFLFFBQVIsS0FBcUI0RSxXQUFXNUUsUUFBcEMsRUFBOEM7QUFDNUNBLHNCQUFZMkUsUUFBUTNFLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLHFCQUFXQyxTQUFYO0FBQ0Q7QUFDRjtBQUNGLEtBbkJELE1BbUJPO0FBQ0wsVUFBSUQsYUFBYUMsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEV6RDtBQUNEO0FBQ0QsVUFBSUQsYUFBYUUsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEUxRDtBQUNEO0FBQ0Y7QUFDRixHQTVCRDs7QUE4QkEsU0FBTyxFQUFDQSxrQkFBRCxFQUFXQyxrQkFBWCxFQUFQO0FBQ0QiLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGNvbnN0IHtvbGRMaW5lcywgbmV3TGluZXN9ID0gY2FsY09sZE5ld0xpbmVDb3VudChodW5rLmxpbmVzKTtcblxuICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsub2xkTGluZXMgPSBvbGRMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaHVuay5uZXdMaW5lcyA9IG5ld0xpbmVzO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBodW5rLm5ld0xpbmVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShtaW5lLCB0aGVpcnMsIGJhc2UpIHtcbiAgbWluZSA9IGxvYWRQYXRjaChtaW5lLCBiYXNlKTtcbiAgdGhlaXJzID0gbG9hZFBhdGNoKHRoZWlycywgYmFzZSk7XG5cbiAgbGV0IHJldCA9IHt9O1xuXG4gIC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG4gIGlmIChtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleCkge1xuICAgIHJldC5pbmRleCA9IG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4O1xuICB9XG5cbiAgaWYgKG1pbmUubmV3RmlsZU5hbWUgfHwgdGhlaXJzLm5ld0ZpbGVOYW1lKSB7XG4gICAgaWYgKCFmaWxlTmFtZUNoYW5nZWQobWluZSkpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gb3VycywgdXNlIHRoZWlycyAoYW5kIG91cnMgaWYgdGhlaXJzIGRvZXMgbm90IGV4aXN0KVxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gdGhlaXJzLm9sZEZpbGVOYW1lIHx8IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSB0aGVpcnMubmV3RmlsZU5hbWUgfHwgbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSB0aGVpcnMub2xkSGVhZGVyIHx8IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHRoZWlycy5uZXdIZWFkZXIgfHwgbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIGlmICghZmlsZU5hbWVDaGFuZ2VkKHRoZWlycykpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gdGhlaXJzLCB1c2Ugb3Vyc1xuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJvdGggY2hhbmdlZC4uLiBmaWd1cmUgaXQgb3V0XG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkRmlsZU5hbWUsIHRoZWlycy5vbGRGaWxlTmFtZSk7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3RmlsZU5hbWUsIHRoZWlycy5uZXdGaWxlTmFtZSk7XG4gICAgICByZXQub2xkSGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEhlYWRlciwgdGhlaXJzLm9sZEhlYWRlcik7XG4gICAgICByZXQubmV3SGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0hlYWRlciwgdGhlaXJzLm5ld0hlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0Lmh1bmtzID0gW107XG5cbiAgbGV0IG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fSxcbiAgICAgICAgdGhlaXJzQ3VycmVudCA9IHRoZWlycy5odW5rc1t0aGVpcnNJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX07XG5cbiAgICBpZiAoaHVua0JlZm9yZShtaW5lQ3VycmVudCwgdGhlaXJzQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsobWluZUN1cnJlbnQsIG1pbmVPZmZzZXQpKTtcbiAgICAgIG1pbmVJbmRleCsrO1xuICAgICAgdGhlaXJzT2Zmc2V0ICs9IG1pbmVDdXJyZW50Lm5ld0xpbmVzIC0gbWluZUN1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIGlmIChodW5rQmVmb3JlKHRoZWlyc0N1cnJlbnQsIG1pbmVDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayh0aGVpcnNDdXJyZW50LCB0aGVpcnNPZmZzZXQpKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lT2Zmc2V0ICs9IHRoZWlyc0N1cnJlbnQubmV3TGluZXMgLSB0aGVpcnNDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdmVybGFwLCBtZXJnZSBhcyBiZXN0IHdlIGNhblxuICAgICAgbGV0IG1lcmdlZEh1bmsgPSB7XG4gICAgICAgIG9sZFN0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCksXG4gICAgICAgIG9sZExpbmVzOiAwLFxuICAgICAgICBuZXdTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQubmV3U3RhcnQgKyBtaW5lT2Zmc2V0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0ICsgdGhlaXJzT2Zmc2V0KSxcbiAgICAgICAgbmV3TGluZXM6IDAsXG4gICAgICAgIGxpbmVzOiBbXVxuICAgICAgfTtcbiAgICAgIG1lcmdlTGluZXMobWVyZ2VkSHVuaywgbWluZUN1cnJlbnQub2xkU3RhcnQsIG1pbmVDdXJyZW50LmxpbmVzLCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50LmxpbmVzKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lSW5kZXgrKztcblxuICAgICAgcmV0Lmh1bmtzLnB1c2gobWVyZ2VkSHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbG9hZFBhdGNoKHBhcmFtLCBiYXNlKSB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKC9eQEAvbS50ZXN0KHBhcmFtKSB8fCAoL15JbmRleDovbS50ZXN0KHBhcmFtKSkpIHtcbiAgICAgIHJldHVybiBwYXJzZVBhdGNoKHBhcmFtKVswXTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgYmFzZSByZWZlcmVuY2Ugb3IgcGFzcyBpbiBhIHBhdGNoJyk7XG4gICAgfVxuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2godW5kZWZpbmVkLCB1bmRlZmluZWQsIGJhc2UsIHBhcmFtKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbTtcbn1cblxuZnVuY3Rpb24gZmlsZU5hbWVDaGFuZ2VkKHBhdGNoKSB7XG4gIHJldHVybiBwYXRjaC5uZXdGaWxlTmFtZSAmJiBwYXRjaC5uZXdGaWxlTmFtZSAhPT0gcGF0Y2gub2xkRmlsZU5hbWU7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZpZWxkKGluZGV4LCBtaW5lLCB0aGVpcnMpIHtcbiAgaWYgKG1pbmUgPT09IHRoZWlycykge1xuICAgIHJldHVybiBtaW5lO1xuICB9IGVsc2Uge1xuICAgIGluZGV4LmNvbmZsaWN0ID0gdHJ1ZTtcbiAgICByZXR1cm4ge21pbmUsIHRoZWlyc307XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVua0JlZm9yZSh0ZXN0LCBjaGVjaykge1xuICByZXR1cm4gdGVzdC5vbGRTdGFydCA8IGNoZWNrLm9sZFN0YXJ0XG4gICAgJiYgKHRlc3Qub2xkU3RhcnQgKyB0ZXN0Lm9sZExpbmVzKSA8IGNoZWNrLm9sZFN0YXJ0O1xufVxuXG5mdW5jdGlvbiBjbG9uZUh1bmsoaHVuaywgb2Zmc2V0KSB7XG4gIHJldHVybiB7XG4gICAgb2xkU3RhcnQ6IGh1bmsub2xkU3RhcnQsIG9sZExpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgIG5ld1N0YXJ0OiBodW5rLm5ld1N0YXJ0ICsgb2Zmc2V0LCBuZXdMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICBsaW5lczogaHVuay5saW5lc1xuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUxpbmVzKGh1bmssIG1pbmVPZmZzZXQsIG1pbmVMaW5lcywgdGhlaXJPZmZzZXQsIHRoZWlyTGluZXMpIHtcbiAgLy8gVGhpcyB3aWxsIGdlbmVyYWxseSByZXN1bHQgaW4gYSBjb25mbGljdGVkIGh1bmssIGJ1dCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIGNvbnRleHRcbiAgLy8gaXMgdGhlIG9ubHkgb3ZlcmxhcCB3aGVyZSB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IG1lcmdlIHRoZSBjb250ZW50IGhlcmUuXG4gIGxldCBtaW5lID0ge29mZnNldDogbWluZU9mZnNldCwgbGluZXM6IG1pbmVMaW5lcywgaW5kZXg6IDB9LFxuICAgICAgdGhlaXIgPSB7b2Zmc2V0OiB0aGVpck9mZnNldCwgbGluZXM6IHRoZWlyTGluZXMsIGluZGV4OiAwfTtcblxuICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgY29udGVudFxuICBpbnNlcnRMZWFkaW5nKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgaW5zZXJ0TGVhZGluZyhodW5rLCB0aGVpciwgbWluZSk7XG5cbiAgLy8gTm93IGluIHRoZSBvdmVybGFwIGNvbnRlbnQuIFNjYW4gdGhyb3VnaCBhbmQgc2VsZWN0IHRoZSBiZXN0IGNoYW5nZXMgZnJvbSBlYWNoLlxuICB3aGlsZSAobWluZS5pbmRleCA8IG1pbmUubGluZXMubGVuZ3RoICYmIHRoZWlyLmluZGV4IDwgdGhlaXIubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IG1pbmVDdXJyZW50ID0gbWluZS5saW5lc1ttaW5lLmluZGV4XSxcbiAgICAgICAgdGhlaXJDdXJyZW50ID0gdGhlaXIubGluZXNbdGhlaXIuaW5kZXhdO1xuXG4gICAgaWYgKChtaW5lQ3VycmVudFswXSA9PT0gJy0nIHx8IG1pbmVDdXJyZW50WzBdID09PSAnKycpXG4gICAgICAgICYmICh0aGVpckN1cnJlbnRbMF0gPT09ICctJyB8fCB0aGVpckN1cnJlbnRbMF0gPT09ICcrJykpIHtcbiAgICAgIC8vIEJvdGggbW9kaWZpZWQgLi4uXG4gICAgICBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnRbMF0gPT09ICcrJyAmJiB0aGVpckN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gTWluZSBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKG1pbmUpKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJysnICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlycyBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJy0nICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlyIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIHRoZWlyLCBtaW5lLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50ID09PSB0aGVpckN1cnJlbnQpIHtcbiAgICAgIC8vIENvbnRleHQgaWRlbnRpdHlcbiAgICAgIGh1bmsubGluZXMucHVzaChtaW5lQ3VycmVudCk7XG4gICAgICBtaW5lLmluZGV4Kys7XG4gICAgICB0aGVpci5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250ZXh0IG1pc21hdGNoXG4gICAgICBjb25mbGljdChodW5rLCBjb2xsZWN0Q2hhbmdlKG1pbmUpLCBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTm93IHB1c2ggYW55dGhpbmcgdGhhdCBtYXkgYmUgcmVtYWluaW5nXG4gIGluc2VydFRyYWlsaW5nKGh1bmssIG1pbmUpO1xuICBpbnNlcnRUcmFpbGluZyhodW5rLCB0aGVpcik7XG5cbiAgY2FsY0xpbmVDb3VudChodW5rKTtcbn1cblxuZnVuY3Rpb24gbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENoYW5nZSh0aGVpcik7XG5cbiAgaWYgKGFsbFJlbW92ZXMobXlDaGFuZ2VzKSAmJiBhbGxSZW1vdmVzKHRoZWlyQ2hhbmdlcykpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHJlbW92ZSBjaGFuZ2VzIHRoYXQgYXJlIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlclxuICAgIGlmIChhcnJheVN0YXJ0c1dpdGgobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpXG4gICAgICAgICYmIHNraXBSZW1vdmVTdXBlcnNldCh0aGVpciwgbXlDaGFuZ2VzLCBteUNoYW5nZXMubGVuZ3RoIC0gdGhlaXJDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gbXlDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGFycmF5U3RhcnRzV2l0aCh0aGVpckNoYW5nZXMsIG15Q2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KG1pbmUsIHRoZWlyQ2hhbmdlcywgdGhlaXJDaGFuZ2VzLmxlbmd0aCAtIG15Q2hhbmdlcy5sZW5ndGgpKSB7XG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIHRoZWlyQ2hhbmdlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9IGVsc2UgaWYgKGFycmF5RXF1YWwobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbmZsaWN0KGh1bmssIG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZhbChodW5rLCBtaW5lLCB0aGVpciwgc3dhcCkge1xuICBsZXQgbXlDaGFuZ2VzID0gY29sbGVjdENoYW5nZShtaW5lKSxcbiAgICAgIHRoZWlyQ2hhbmdlcyA9IGNvbGxlY3RDb250ZXh0KHRoZWlyLCBteUNoYW5nZXMpO1xuICBpZiAodGhlaXJDaGFuZ2VzLm1lcmdlZCkge1xuICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzLm1lcmdlZCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmxpY3QoaHVuaywgc3dhcCA/IHRoZWlyQ2hhbmdlcyA6IG15Q2hhbmdlcywgc3dhcCA/IG15Q2hhbmdlcyA6IHRoZWlyQ2hhbmdlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uZmxpY3QoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgaHVuay5jb25mbGljdCA9IHRydWU7XG4gIGh1bmsubGluZXMucHVzaCh7XG4gICAgY29uZmxpY3Q6IHRydWUsXG4gICAgbWluZTogbWluZSxcbiAgICB0aGVpcnM6IHRoZWlyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRMZWFkaW5nKGh1bmssIGluc2VydCwgdGhlaXIpIHtcbiAgd2hpbGUgKGluc2VydC5vZmZzZXQgPCB0aGVpci5vZmZzZXQgJiYgaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gICAgaW5zZXJ0Lm9mZnNldCsrO1xuICB9XG59XG5mdW5jdGlvbiBpbnNlcnRUcmFpbGluZyhodW5rLCBpbnNlcnQpIHtcbiAgd2hpbGUgKGluc2VydC5pbmRleCA8IGluc2VydC5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IGluc2VydC5saW5lc1tpbnNlcnQuaW5kZXgrK107XG4gICAgaHVuay5saW5lcy5wdXNoKGxpbmUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RDaGFuZ2Uoc3RhdGUpIHtcbiAgbGV0IHJldCA9IFtdLFxuICAgICAgb3BlcmF0aW9uID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdWzBdO1xuICB3aGlsZSAoc3RhdGUuaW5kZXggPCBzdGF0ZS5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XTtcblxuICAgIC8vIEdyb3VwIGFkZGl0aW9ucyB0aGF0IGFyZSBpbW1lZGlhdGVseSBhZnRlciBzdWJ0cmFjdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgb25lIFwiYXRvbWljXCIgbW9kaWZ5IGNoYW5nZS5cbiAgICBpZiAob3BlcmF0aW9uID09PSAnLScgJiYgbGluZVswXSA9PT0gJysnKSB7XG4gICAgICBvcGVyYXRpb24gPSAnKyc7XG4gICAgfVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gbGluZVswXSkge1xuICAgICAgcmV0LnB1c2gobGluZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gY29sbGVjdENvbnRleHQoc3RhdGUsIG1hdGNoQ2hhbmdlcykge1xuICBsZXQgY2hhbmdlcyA9IFtdLFxuICAgICAgbWVyZ2VkID0gW10sXG4gICAgICBtYXRjaEluZGV4ID0gMCxcbiAgICAgIGNvbnRleHRDaGFuZ2VzID0gZmFsc2UsXG4gICAgICBjb25mbGljdGVkID0gZmFsc2U7XG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aFxuICAgICAgICAmJiBzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBjaGFuZ2UgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF0sXG4gICAgICAgIG1hdGNoID0gbWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdO1xuXG4gICAgLy8gT25jZSB3ZSd2ZSBoaXQgb3VyIGFkZCwgdGhlbiB3ZSBhcmUgZG9uZVxuICAgIGlmIChtYXRjaFswXSA9PT0gJysnKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb250ZXh0Q2hhbmdlcyA9IGNvbnRleHRDaGFuZ2VzIHx8IGNoYW5nZVswXSAhPT0gJyAnO1xuXG4gICAgbWVyZ2VkLnB1c2gobWF0Y2gpO1xuICAgIG1hdGNoSW5kZXgrKztcblxuICAgIC8vIENvbnN1bWUgYW55IGFkZGl0aW9ucyBpbiB0aGUgb3RoZXIgYmxvY2sgYXMgYSBjb25mbGljdCB0byBhdHRlbXB0XG4gICAgLy8gdG8gcHVsbCBpbiB0aGUgcmVtYWluaW5nIGNvbnRleHQgYWZ0ZXIgdGhpc1xuICAgIGlmIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgY2hhbmdlID0gc3RhdGUubGluZXNbKytzdGF0ZS5pbmRleF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnN1YnN0cigxKSA9PT0gY2hhbmdlLnN1YnN0cigxKSkge1xuICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XSB8fCAnJylbMF0gPT09ICcrJ1xuICAgICAgJiYgY29udGV4dENoYW5nZXMpIHtcbiAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChjb25mbGljdGVkKSB7XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICB3aGlsZSAobWF0Y2hJbmRleCA8IG1hdGNoQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICBtZXJnZWQucHVzaChtYXRjaENoYW5nZXNbbWF0Y2hJbmRleCsrXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lcmdlZCxcbiAgICBjaGFuZ2VzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFsbFJlbW92ZXMoY2hhbmdlcykge1xuICByZXR1cm4gY2hhbmdlcy5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY2hhbmdlKSB7XG4gICAgcmV0dXJuIHByZXYgJiYgY2hhbmdlWzBdID09PSAnLSc7XG4gIH0sIHRydWUpO1xufVxuZnVuY3Rpb24gc2tpcFJlbW92ZVN1cGVyc2V0KHN0YXRlLCByZW1vdmVDaGFuZ2VzLCBkZWx0YSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhOyBpKyspIHtcbiAgICBsZXQgY2hhbmdlQ29udGVudCA9IHJlbW92ZUNoYW5nZXNbcmVtb3ZlQ2hhbmdlcy5sZW5ndGggLSBkZWx0YSArIGldLnN1YnN0cigxKTtcbiAgICBpZiAoc3RhdGUubGluZXNbc3RhdGUuaW5kZXggKyBpXSAhPT0gJyAnICsgY2hhbmdlQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmluZGV4ICs9IGRlbHRhO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lcykge1xuICBsZXQgb2xkTGluZXMgPSAwO1xuICBsZXQgbmV3TGluZXMgPSAwO1xuXG4gIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgIGlmICh0eXBlb2YgbGluZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBteUNvdW50ID0gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lLm1pbmUpO1xuICAgICAgbGV0IHRoZWlyQ291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUudGhlaXJzKTtcblxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQub2xkTGluZXMgPT09IHRoZWlyQ291bnQub2xkTGluZXMpIHtcbiAgICAgICAgICBvbGRMaW5lcyArPSBteUNvdW50Lm9sZExpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZExpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChteUNvdW50Lm5ld0xpbmVzID09PSB0aGVpckNvdW50Lm5ld0xpbmVzKSB7XG4gICAgICAgICAgbmV3TGluZXMgKz0gbXlDb3VudC5uZXdMaW5lcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdMaW5lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJysnIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgbmV3TGluZXMrKztcbiAgICAgIH1cbiAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnLScgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBvbGRMaW5lcysrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtvbGRMaW5lcywgbmV3TGluZXN9O1xufVxuIl19
5074  
5075  
5076  /***/ }),
5077  /* 14 */
5078  /***/ (function(module, exports, __webpack_require__) {
5079  
5080      /*istanbul ignore start*/'use strict';
5081  
5082      exports.__esModule = true;
5083      exports. /*istanbul ignore end*/structuredPatch = structuredPatch;
5084      /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch;
5085      /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch;
5086  
5087      var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
5088  
5089      /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
5090  
5091      /*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
5092        if (!options) {
5093          options = {};
5094        }
5095        if (typeof options.context === 'undefined') {
5096          options.context = 4;
5097        }
5098  
5099        var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr, options);
5100        diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier
5101  
5102  	  function contextLines(lines) {
5103          return lines.map(function (entry) {
5104            return ' ' + entry;
5105          });
5106        }
5107  
5108        var hunks = [];
5109        var oldRangeStart = 0,
5110            newRangeStart = 0,
5111            curRange = [],
5112            oldLine = 1,
5113            newLine = 1;
5114  
5115        /*istanbul ignore start*/var _loop = function _loop( /*istanbul ignore end*/i) {
5116          var current = diff[i],
5117              lines = current.lines || current.value.replace(/\n$/, '').split('\n');
5118          current.lines = lines;
5119  
5120          if (current.added || current.removed) {
5121            /*istanbul ignore start*/var _curRange;
5122  
5123            /*istanbul ignore end*/ // If we have previous context, start with that
5124            if (!oldRangeStart) {
5125              var prev = diff[i - 1];
5126              oldRangeStart = oldLine;
5127              newRangeStart = newLine;
5128  
5129              if (prev) {
5130                curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
5131                oldRangeStart -= curRange.length;
5132                newRangeStart -= curRange.length;
5133              }
5134            }
5135  
5136            // Output our changes
5137            /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) {
5138              return (current.added ? '+' : '-') + entry;
5139            })));
5140  
5141            // Track the updated file position
5142            if (current.added) {
5143              newLine += lines.length;
5144            } else {
5145              oldLine += lines.length;
5146            }
5147          } else {
5148            // Identical context lines. Track line changes
5149            if (oldRangeStart) {
5150              // Close out any changes that have been output (or join overlapping)
5151              if (lines.length <= options.context * 2 && i < diff.length - 2) {
5152                /*istanbul ignore start*/var _curRange2;
5153  
5154                /*istanbul ignore end*/ // Overlapping
5155                /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines)));
5156              } else {
5157                /*istanbul ignore start*/var _curRange3;
5158  
5159                /*istanbul ignore end*/ // end the range and output
5160                var contextSize = Math.min(lines.length, options.context);
5161                /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize))));
5162  
5163                var hunk = {
5164                  oldStart: oldRangeStart,
5165                  oldLines: oldLine - oldRangeStart + contextSize,
5166                  newStart: newRangeStart,
5167                  newLines: newLine - newRangeStart + contextSize,
5168                  lines: curRange
5169                };
5170                if (i >= diff.length - 2 && lines.length <= options.context) {
5171                  // EOF is inside this hunk
5172                  var oldEOFNewline = /\n$/.test(oldStr);
5173                  var newEOFNewline = /\n$/.test(newStr);
5174                  if (lines.length == 0 && !oldEOFNewline) {
5175                    // special case: old has no eol and no trailing context; no-nl can end up before adds
5176                    curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
5177                  } else if (!oldEOFNewline || !newEOFNewline) {
5178                    curRange.push('\\ No newline at end of file');
5179                  }
5180                }
5181                hunks.push(hunk);
5182  
5183                oldRangeStart = 0;
5184                newRangeStart = 0;
5185                curRange = [];
5186              }
5187            }
5188            oldLine += lines.length;
5189            newLine += lines.length;
5190          }
5191        };
5192  
5193        for (var i = 0; i < diff.length; i++) {
5194          /*istanbul ignore start*/_loop( /*istanbul ignore end*/i);
5195        }
5196  
5197        return {
5198          oldFileName: oldFileName, newFileName: newFileName,
5199          oldHeader: oldHeader, newHeader: newHeader,
5200          hunks: hunks
5201        };
5202      }
5203  
5204  	function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
5205        var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
5206  
5207        var ret = [];
5208        if (oldFileName == newFileName) {
5209          ret.push('Index: ' + oldFileName);
5210        }
5211        ret.push('===================================================================');
5212        ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
5213        ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
5214  
5215        for (var i = 0; i < diff.hunks.length; i++) {
5216          var hunk = diff.hunks[i];
5217          ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
5218          ret.push.apply(ret, hunk.lines);
5219        }
5220  
5221        return ret.join('\n') + '\n';
5222      }
5223  
5224  	function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
5225        return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
5226      }
5227      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwic3BsaWNlIiwicmV0IiwiYXBwbHkiLCJqb2luIiwiZmlsZU5hbWUiXSwibWFwcGluZ3MiOiI7OztnQ0FFZ0JBLGUsR0FBQUEsZTt5REFpR0FDLG1CLEdBQUFBLG1CO3lEQXdCQUMsVyxHQUFBQSxXOztBQTNIaEI7Ozs7dUJBRU8sU0FBU0YsZUFBVCxDQUF5QkcsV0FBekIsRUFBc0NDLFdBQXRDLEVBQW1EQyxNQUFuRCxFQUEyREMsTUFBM0QsRUFBbUVDLFNBQW5FLEVBQThFQyxTQUE5RSxFQUF5RkMsT0FBekYsRUFBa0c7QUFDdkcsTUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDWkEsY0FBVSxFQUFWO0FBQ0Q7QUFDRCxNQUFJLE9BQU9BLFFBQVFDLE9BQWYsS0FBMkIsV0FBL0IsRUFBNEM7QUFDMUNELFlBQVFDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxNQUFNQyxPQUFPLHNFQUFVTixNQUFWLEVBQWtCQyxNQUFsQixFQUEwQkcsT0FBMUIsQ0FBYjtBQUNBRSxPQUFLQyxJQUFMLENBQVUsRUFBQ0MsT0FBTyxFQUFSLEVBQVlDLE9BQU8sRUFBbkIsRUFBVixFQVR1RyxDQVNsRTs7QUFFckMsV0FBU0MsWUFBVCxDQUFzQkQsS0FBdEIsRUFBNkI7QUFDM0IsV0FBT0EsTUFBTUUsR0FBTixDQUFVLFVBQVNDLEtBQVQsRUFBZ0I7QUFBRSxhQUFPLE1BQU1BLEtBQWI7QUFBcUIsS0FBakQsQ0FBUDtBQUNEOztBQUVELE1BQUlDLFFBQVEsRUFBWjtBQUNBLE1BQUlDLGdCQUFnQixDQUFwQjtBQUFBLE1BQXVCQyxnQkFBZ0IsQ0FBdkM7QUFBQSxNQUEwQ0MsV0FBVyxFQUFyRDtBQUFBLE1BQ0lDLFVBQVUsQ0FEZDtBQUFBLE1BQ2lCQyxVQUFVLENBRDNCOztBQWhCdUcsOEVBa0I5RkMsQ0FsQjhGO0FBbUJyRyxRQUFNQyxVQUFVZCxLQUFLYSxDQUFMLENBQWhCO0FBQUEsUUFDTVYsUUFBUVcsUUFBUVgsS0FBUixJQUFpQlcsUUFBUVosS0FBUixDQUFjYSxPQUFkLENBQXNCLEtBQXRCLEVBQTZCLEVBQTdCLEVBQWlDQyxLQUFqQyxDQUF1QyxJQUF2QyxDQUQvQjtBQUVBRixZQUFRWCxLQUFSLEdBQWdCQSxLQUFoQjs7QUFFQSxRQUFJVyxRQUFRRyxLQUFSLElBQWlCSCxRQUFRSSxPQUE3QixFQUFzQztBQUFBOztBQUFBLDhCQUNwQztBQUNBLFVBQUksQ0FBQ1YsYUFBTCxFQUFvQjtBQUNsQixZQUFNVyxPQUFPbkIsS0FBS2EsSUFBSSxDQUFULENBQWI7QUFDQUwsd0JBQWdCRyxPQUFoQjtBQUNBRix3QkFBZ0JHLE9BQWhCOztBQUVBLFlBQUlPLElBQUosRUFBVTtBQUNSVCxxQkFBV1osUUFBUUMsT0FBUixHQUFrQixDQUFsQixHQUFzQkssYUFBYWUsS0FBS2hCLEtBQUwsQ0FBV2lCLEtBQVgsQ0FBaUIsQ0FBQ3RCLFFBQVFDLE9BQTFCLENBQWIsQ0FBdEIsR0FBeUUsRUFBcEY7QUFDQVMsMkJBQWlCRSxTQUFTVyxNQUExQjtBQUNBWiwyQkFBaUJDLFNBQVNXLE1BQTFCO0FBQ0Q7QUFDRjs7QUFFRDtBQUNBLDZFQUFTcEIsSUFBVCwwTEFBa0JFLE1BQU1FLEdBQU4sQ0FBVSxVQUFTQyxLQUFULEVBQWdCO0FBQzFDLGVBQU8sQ0FBQ1EsUUFBUUcsS0FBUixHQUFnQixHQUFoQixHQUFzQixHQUF2QixJQUE4QlgsS0FBckM7QUFDRCxPQUZpQixDQUFsQjs7QUFJQTtBQUNBLFVBQUlRLFFBQVFHLEtBQVosRUFBbUI7QUFDakJMLG1CQUFXVCxNQUFNa0IsTUFBakI7QUFDRCxPQUZELE1BRU87QUFDTFYsbUJBQVdSLE1BQU1rQixNQUFqQjtBQUNEO0FBQ0YsS0F6QkQsTUF5Qk87QUFDTDtBQUNBLFVBQUliLGFBQUosRUFBbUI7QUFDakI7QUFDQSxZQUFJTCxNQUFNa0IsTUFBTixJQUFnQnZCLFFBQVFDLE9BQVIsR0FBa0IsQ0FBbEMsSUFBdUNjLElBQUliLEtBQUtxQixNQUFMLEdBQWMsQ0FBN0QsRUFBZ0U7QUFBQTs7QUFBQSxrQ0FDOUQ7QUFDQSxrRkFBU3BCLElBQVQsMkxBQWtCRyxhQUFhRCxLQUFiLENBQWxCO0FBQ0QsU0FIRCxNQUdPO0FBQUE7O0FBQUEsa0NBQ0w7QUFDQSxjQUFJbUIsY0FBY0MsS0FBS0MsR0FBTCxDQUFTckIsTUFBTWtCLE1BQWYsRUFBdUJ2QixRQUFRQyxPQUEvQixDQUFsQjtBQUNBLGtGQUFTRSxJQUFULDJMQUFrQkcsYUFBYUQsTUFBTWlCLEtBQU4sQ0FBWSxDQUFaLEVBQWVFLFdBQWYsQ0FBYixDQUFsQjs7QUFFQSxjQUFJRyxPQUFPO0FBQ1RDLHNCQUFVbEIsYUFERDtBQUVUbUIsc0JBQVdoQixVQUFVSCxhQUFWLEdBQTBCYyxXQUY1QjtBQUdUTSxzQkFBVW5CLGFBSEQ7QUFJVG9CLHNCQUFXakIsVUFBVUgsYUFBVixHQUEwQmEsV0FKNUI7QUFLVG5CLG1CQUFPTztBQUxFLFdBQVg7QUFPQSxjQUFJRyxLQUFLYixLQUFLcUIsTUFBTCxHQUFjLENBQW5CLElBQXdCbEIsTUFBTWtCLE1BQU4sSUFBZ0J2QixRQUFRQyxPQUFwRCxFQUE2RDtBQUMzRDtBQUNBLGdCQUFJK0IsZ0JBQWlCLE1BQU1DLElBQU4sQ0FBV3JDLE1BQVgsQ0FBckI7QUFDQSxnQkFBSXNDLGdCQUFpQixNQUFNRCxJQUFOLENBQVdwQyxNQUFYLENBQXJCO0FBQ0EsZ0JBQUlRLE1BQU1rQixNQUFOLElBQWdCLENBQWhCLElBQXFCLENBQUNTLGFBQTFCLEVBQXlDO0FBQ3ZDO0FBQ0FwQix1QkFBU3VCLE1BQVQsQ0FBZ0JSLEtBQUtFLFFBQXJCLEVBQStCLENBQS9CLEVBQWtDLDhCQUFsQztBQUNELGFBSEQsTUFHTyxJQUFJLENBQUNHLGFBQUQsSUFBa0IsQ0FBQ0UsYUFBdkIsRUFBc0M7QUFDM0N0Qix1QkFBU1QsSUFBVCxDQUFjLDhCQUFkO0FBQ0Q7QUFDRjtBQUNETSxnQkFBTU4sSUFBTixDQUFXd0IsSUFBWDs7QUFFQWpCLDBCQUFnQixDQUFoQjtBQUNBQywwQkFBZ0IsQ0FBaEI7QUFDQUMscUJBQVcsRUFBWDtBQUNEO0FBQ0Y7QUFDREMsaUJBQVdSLE1BQU1rQixNQUFqQjtBQUNBVCxpQkFBV1QsTUFBTWtCLE1BQWpCO0FBQ0Q7QUF2Rm9HOztBQWtCdkcsT0FBSyxJQUFJUixJQUFJLENBQWIsRUFBZ0JBLElBQUliLEtBQUtxQixNQUF6QixFQUFpQ1IsR0FBakMsRUFBc0M7QUFBQSwyREFBN0JBLENBQTZCO0FBc0VyQzs7QUFFRCxTQUFPO0FBQ0xyQixpQkFBYUEsV0FEUixFQUNxQkMsYUFBYUEsV0FEbEM7QUFFTEcsZUFBV0EsU0FGTixFQUVpQkMsV0FBV0EsU0FGNUI7QUFHTFUsV0FBT0E7QUFIRixHQUFQO0FBS0Q7O0FBRU0sU0FBU2pCLG1CQUFULENBQTZCRSxXQUE3QixFQUEwQ0MsV0FBMUMsRUFBdURDLE1BQXZELEVBQStEQyxNQUEvRCxFQUF1RUMsU0FBdkUsRUFBa0ZDLFNBQWxGLEVBQTZGQyxPQUE3RixFQUFzRztBQUMzRyxNQUFNRSxPQUFPWCxnQkFBZ0JHLFdBQWhCLEVBQTZCQyxXQUE3QixFQUEwQ0MsTUFBMUMsRUFBa0RDLE1BQWxELEVBQTBEQyxTQUExRCxFQUFxRUMsU0FBckUsRUFBZ0ZDLE9BQWhGLENBQWI7O0FBRUEsTUFBTW9DLE1BQU0sRUFBWjtBQUNBLE1BQUkxQyxlQUFlQyxXQUFuQixFQUFnQztBQUM5QnlDLFFBQUlqQyxJQUFKLENBQVMsWUFBWVQsV0FBckI7QUFDRDtBQUNEMEMsTUFBSWpDLElBQUosQ0FBUyxxRUFBVDtBQUNBaUMsTUFBSWpDLElBQUosQ0FBUyxTQUFTRCxLQUFLUixXQUFkLElBQTZCLE9BQU9RLEtBQUtKLFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0ksS0FBS0osU0FBdEYsQ0FBVDtBQUNBc0MsTUFBSWpDLElBQUosQ0FBUyxTQUFTRCxLQUFLUCxXQUFkLElBQTZCLE9BQU9PLEtBQUtILFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0csS0FBS0gsU0FBdEYsQ0FBVDs7QUFFQSxPQUFLLElBQUlnQixJQUFJLENBQWIsRUFBZ0JBLElBQUliLEtBQUtPLEtBQUwsQ0FBV2MsTUFBL0IsRUFBdUNSLEdBQXZDLEVBQTRDO0FBQzFDLFFBQU1ZLE9BQU96QixLQUFLTyxLQUFMLENBQVdNLENBQVgsQ0FBYjtBQUNBcUIsUUFBSWpDLElBQUosQ0FDRSxTQUFTd0IsS0FBS0MsUUFBZCxHQUF5QixHQUF6QixHQUErQkQsS0FBS0UsUUFBcEMsR0FDRSxJQURGLEdBQ1NGLEtBQUtHLFFBRGQsR0FDeUIsR0FEekIsR0FDK0JILEtBQUtJLFFBRHBDLEdBRUUsS0FISjtBQUtBSyxRQUFJakMsSUFBSixDQUFTa0MsS0FBVCxDQUFlRCxHQUFmLEVBQW9CVCxLQUFLdEIsS0FBekI7QUFDRDs7QUFFRCxTQUFPK0IsSUFBSUUsSUFBSixDQUFTLElBQVQsSUFBaUIsSUFBeEI7QUFDRDs7QUFFTSxTQUFTN0MsV0FBVCxDQUFxQjhDLFFBQXJCLEVBQStCM0MsTUFBL0IsRUFBdUNDLE1BQXZDLEVBQStDQyxTQUEvQyxFQUEwREMsU0FBMUQsRUFBcUVDLE9BQXJFLEVBQThFO0FBQ25GLFNBQU9SLG9CQUFvQitDLFFBQXBCLEVBQThCQSxRQUE5QixFQUF3QzNDLE1BQXhDLEVBQWdEQyxNQUFoRCxFQUF3REMsU0FBeEQsRUFBbUVDLFNBQW5FLEVBQThFQyxPQUE5RSxDQUFQO0FBQ0QiLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgZGlmZi5wdXNoKHt2YWx1ZTogJycsIGxpbmVzOiBbXX0pOyAgIC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgvXFxuJC8udGVzdChvbGRTdHIpKTtcbiAgICAgICAgICAgIGxldCBuZXdFT0ZOZXdsaW5lID0gKC9cXG4kLy50ZXN0KG5ld1N0cikpO1xuICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAwICYmICFvbGRFT0ZOZXdsaW5lKSB7XG4gICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb2xkIGhhcyBubyBlb2wgYW5kIG5vIHRyYWlsaW5nIGNvbnRleHQ7IG5vLW5sIGNhbiBlbmQgdXAgYmVmb3JlIGFkZHNcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9sZEVPRk5ld2xpbmUgfHwgIW5ld0VPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgY3VyUmFuZ2UucHVzaCgnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGh1bmtzLnB1c2goaHVuayk7XG5cbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBjdXJSYW5nZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2xkRmlsZU5hbWU6IG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZTogbmV3RmlsZU5hbWUsXG4gICAgb2xkSGVhZGVyOiBvbGRIZWFkZXIsIG5ld0hlYWRlcjogbmV3SGVhZGVyLFxuICAgIGh1bmtzOiBodW5rc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID0gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcblxuICBjb25zdCByZXQgPSBbXTtcbiAgaWYgKG9sZEZpbGVOYW1lID09IG5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgb2xkRmlsZU5hbWUpO1xuICB9XG4gIHJldC5wdXNoKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gIHJldC5wdXNoKCctLS0gJyArIGRpZmYub2xkRmlsZU5hbWUgKyAodHlwZW9mIGRpZmYub2xkSGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm9sZEhlYWRlcikpO1xuICByZXQucHVzaCgnKysrICcgKyBkaWZmLm5ld0ZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm5ld0hlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5uZXdIZWFkZXIpKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYuaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBodW5rID0gZGlmZi5odW5rc1tpXTtcbiAgICByZXQucHVzaChcbiAgICAgICdAQCAtJyArIGh1bmsub2xkU3RhcnQgKyAnLCcgKyBodW5rLm9sZExpbmVzXG4gICAgICArICcgKycgKyBodW5rLm5ld1N0YXJ0ICsgJywnICsgaHVuay5uZXdMaW5lc1xuICAgICAgKyAnIEBAJ1xuICAgICk7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBodW5rLmxpbmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXQuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNyZWF0ZVR3b0ZpbGVzUGF0Y2goZmlsZU5hbWUsIGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xufVxuIl19
5228  
5229  
5230  /***/ }),
5231  /* 15 */
5232  /***/ (function(module, exports) {
5233  
5234      /*istanbul ignore start*/"use strict";
5235  
5236      exports.__esModule = true;
5237      exports. /*istanbul ignore end*/arrayEqual = arrayEqual;
5238      /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayStartsWith = arrayStartsWith;
5239  	function arrayEqual(a, b) {
5240        if (a.length !== b.length) {
5241          return false;
5242        }
5243  
5244        return arrayStartsWith(a, b);
5245      }
5246  
5247  	function arrayStartsWith(array, start) {
5248        if (start.length > array.length) {
5249          return false;
5250        }
5251  
5252        for (var i = 0; i < start.length; i++) {
5253          if (start[i] !== array[i]) {
5254            return false;
5255          }
5256        }
5257  
5258        return true;
5259      }
5260      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhcnJheVN0YXJ0c1dpdGgiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCQSxVLEdBQUFBLFU7eURBUUFDLGUsR0FBQUEsZTtBQVJULFNBQVNELFVBQVQsQ0FBb0JFLENBQXBCLEVBQXVCQyxDQUF2QixFQUEwQjtBQUMvQixNQUFJRCxFQUFFRSxNQUFGLEtBQWFELEVBQUVDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9ILGdCQUFnQkMsQ0FBaEIsRUFBbUJDLENBQW5CLENBQVA7QUFDRDs7QUFFTSxTQUFTRixlQUFULENBQXlCSSxLQUF6QixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDNUMsTUFBSUEsTUFBTUYsTUFBTixHQUFlQyxNQUFNRCxNQUF6QixFQUFpQztBQUMvQixXQUFPLEtBQVA7QUFDRDs7QUFFRCxPQUFLLElBQUlHLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTUYsTUFBMUIsRUFBa0NHLEdBQWxDLEVBQXVDO0FBQ3JDLFFBQUlELE1BQU1DLENBQU4sTUFBYUYsTUFBTUUsQ0FBTixDQUFqQixFQUEyQjtBQUN6QixhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVELFNBQU8sSUFBUDtBQUNEIiwiZmlsZSI6ImFycmF5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFycmF5RXF1YWwoYSwgYikge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5U3RhcnRzV2l0aChhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5U3RhcnRzV2l0aChhcnJheSwgc3RhcnQpIHtcbiAgaWYgKHN0YXJ0Lmxlbmd0aCA+IGFycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RhcnRbaV0gIT09IGFycmF5W2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
5261  
5262  
5263  /***/ }),
5264  /* 16 */
5265  /***/ (function(module, exports) {
5266  
5267      /*istanbul ignore start*/"use strict";
5268  
5269      exports.__esModule = true;
5270      exports. /*istanbul ignore end*/convertChangesToDMP = convertChangesToDMP;
5271      // See: http://code.google.com/p/google-diff-match-patch/wiki/API
5272  	function convertChangesToDMP(changes) {
5273        var ret = [],
5274            change = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
5275            operation = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
5276        for (var i = 0; i < changes.length; i++) {
5277          change = changes[i];
5278          if (change.added) {
5279            operation = 1;
5280          } else if (change.removed) {
5281            operation = -1;
5282          } else {
5283            operation = 0;
5284          }
5285  
5286          ret.push([operation, change.value]);
5287        }
5288        return ret;
5289      }
5290      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7OztnQ0FDZ0JBLG1CLEdBQUFBLG1CO0FBRGhCO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLE1BQU0sRUFBVjtBQUFBLE1BQ0lDLHdDQURKO0FBQUEsTUFFSUMsMkNBRko7QUFHQSxPQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUosUUFBUUssTUFBNUIsRUFBb0NELEdBQXBDLEVBQXlDO0FBQ3ZDRixhQUFTRixRQUFRSSxDQUFSLENBQVQ7QUFDQSxRQUFJRixPQUFPSSxLQUFYLEVBQWtCO0FBQ2hCSCxrQkFBWSxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE9BQU9LLE9BQVgsRUFBb0I7QUFDekJKLGtCQUFZLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxrQkFBWSxDQUFaO0FBQ0Q7O0FBRURGLFFBQUlPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE9BQU9PLEtBQW5CLENBQVQ7QUFDRDtBQUNELFNBQU9SLEdBQVA7QUFDRCIsImZpbGUiOiJkbXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWU6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtZGlmZi1tYXRjaC1wYXRjaC93aWtpL0FQSVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDaGFuZ2VzVG9ETVAoY2hhbmdlcykge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBjaGFuZ2UsXG4gICAgICBvcGVyYXRpb247XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgb3BlcmF0aW9uID0gMTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3BlcmF0aW9uID0gMDtcbiAgICB9XG5cbiAgICByZXQucHVzaChbb3BlcmF0aW9uLCBjaGFuZ2UudmFsdWVdKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
5291  
5292  
5293  /***/ }),
5294  /* 17 */
5295  /***/ (function(module, exports) {
5296  
5297      /*istanbul ignore start*/'use strict';
5298  
5299      exports.__esModule = true;
5300      exports. /*istanbul ignore end*/convertChangesToXML = convertChangesToXML;
5301  	function convertChangesToXML(changes) {
5302        var ret = [];
5303        for (var i = 0; i < changes.length; i++) {
5304          var change = changes[i];
5305          if (change.added) {
5306            ret.push('<ins>');
5307          } else if (change.removed) {
5308            ret.push('<del>');
5309          }
5310  
5311          ret.push(escapeHTML(change.value));
5312  
5313          if (change.added) {
5314            ret.push('</ins>');
5315          } else if (change.removed) {
5316            ret.push('</del>');
5317          }
5318        }
5319        return ret.join('');
5320      }
5321  
5322  	function escapeHTML(s) {
5323        var n = s;
5324        n = n.replace(/&/g, '&amp;');
5325        n = n.replace(/</g, '&lt;');
5326        n = n.replace(/>/g, '&gt;');
5327        n = n.replace(/"/g, '&quot;');
5328  
5329        return n;
5330      }
5331      
5332  
5333  /***/ })
5334  /******/ ])
5335  });
5336  ;
5337  
5338  /***/ }),
5339  
5340  /***/ 263:
5341  /***/ (function(module, exports) {
5342  
5343  var traverse = module.exports = function (obj) {
5344      return new Traverse(obj);
5345  };
5346  
5347  function Traverse (obj) {
5348      this.value = obj;
5349  }
5350  
5351  Traverse.prototype.get = function (ps) {
5352      var node = this.value;
5353      for (var i = 0; i < ps.length; i ++) {
5354          var key = ps[i];
5355          if (!node || !hasOwnProperty.call(node, key)) {
5356              node = undefined;
5357              break;
5358          }
5359          node = node[key];
5360      }
5361      return node;
5362  };
5363  
5364  Traverse.prototype.has = function (ps) {
5365      var node = this.value;
5366      for (var i = 0; i < ps.length; i ++) {
5367          var key = ps[i];
5368          if (!node || !hasOwnProperty.call(node, key)) {
5369              return false;
5370          }
5371          node = node[key];
5372      }
5373      return true;
5374  };
5375  
5376  Traverse.prototype.set = function (ps, value) {
5377      var node = this.value;
5378      for (var i = 0; i < ps.length - 1; i ++) {
5379          var key = ps[i];
5380          if (!hasOwnProperty.call(node, key)) node[key] = {};
5381          node = node[key];
5382      }
5383      node[ps[i]] = value;
5384      return value;
5385  };
5386  
5387  Traverse.prototype.map = function (cb) {
5388      return walk(this.value, cb, true);
5389  };
5390  
5391  Traverse.prototype.forEach = function (cb) {
5392      this.value = walk(this.value, cb, false);
5393      return this.value;
5394  };
5395  
5396  Traverse.prototype.reduce = function (cb, init) {
5397      var skip = arguments.length === 1;
5398      var acc = skip ? this.value : init;
5399      this.forEach(function (x) {
5400          if (!this.isRoot || !skip) {
5401              acc = cb.call(this, acc, x);
5402          }
5403      });
5404      return acc;
5405  };
5406  
5407  Traverse.prototype.paths = function () {
5408      var acc = [];
5409      this.forEach(function (x) {
5410          acc.push(this.path); 
5411      });
5412      return acc;
5413  };
5414  
5415  Traverse.prototype.nodes = function () {
5416      var acc = [];
5417      this.forEach(function (x) {
5418          acc.push(this.node);
5419      });
5420      return acc;
5421  };
5422  
5423  Traverse.prototype.clone = function () {
5424      var parents = [], nodes = [];
5425      
5426      return (function clone (src) {
5427          for (var i = 0; i < parents.length; i++) {
5428              if (parents[i] === src) {
5429                  return nodes[i];
5430              }
5431          }
5432          
5433          if (typeof src === 'object' && src !== null) {
5434              var dst = copy(src);
5435              
5436              parents.push(src);
5437              nodes.push(dst);
5438              
5439              forEach(objectKeys(src), function (key) {
5440                  dst[key] = clone(src[key]);
5441              });
5442              
5443              parents.pop();
5444              nodes.pop();
5445              return dst;
5446          }
5447          else {
5448              return src;
5449          }
5450      })(this.value);
5451  };
5452  
5453  function walk (root, cb, immutable) {
5454      var path = [];
5455      var parents = [];
5456      var alive = true;
5457      
5458      return (function walker (node_) {
5459          var node = immutable ? copy(node_) : node_;
5460          var modifiers = {};
5461          
5462          var keepGoing = true;
5463          
5464          var state = {
5465              node : node,
5466              node_ : node_,
5467              path : [].concat(path),
5468              parent : parents[parents.length - 1],
5469              parents : parents,
5470              key : path.slice(-1)[0],
5471              isRoot : path.length === 0,
5472              level : path.length,
5473              circular : null,
5474              update : function (x, stopHere) {
5475                  if (!state.isRoot) {
5476                      state.parent.node[state.key] = x;
5477                  }
5478                  state.node = x;
5479                  if (stopHere) keepGoing = false;
5480              },
5481              'delete' : function (stopHere) {
5482                  delete state.parent.node[state.key];
5483                  if (stopHere) keepGoing = false;
5484              },
5485              remove : function (stopHere) {
5486                  if (isArray(state.parent.node)) {
5487                      state.parent.node.splice(state.key, 1);
5488                  }
5489                  else {
5490                      delete state.parent.node[state.key];
5491                  }
5492                  if (stopHere) keepGoing = false;
5493              },
5494              keys : null,
5495              before : function (f) { modifiers.before = f },
5496              after : function (f) { modifiers.after = f },
5497              pre : function (f) { modifiers.pre = f },
5498              post : function (f) { modifiers.post = f },
5499              stop : function () { alive = false },
5500              block : function () { keepGoing = false }
5501          };
5502          
5503          if (!alive) return state;
5504          
5505          function updateState() {
5506              if (typeof state.node === 'object' && state.node !== null) {
5507                  if (!state.keys || state.node_ !== state.node) {
5508                      state.keys = objectKeys(state.node)
5509                  }
5510                  
5511                  state.isLeaf = state.keys.length == 0;
5512                  
5513                  for (var i = 0; i < parents.length; i++) {
5514                      if (parents[i].node_ === node_) {
5515                          state.circular = parents[i];
5516                          break;
5517                      }
5518                  }
5519              }
5520              else {
5521                  state.isLeaf = true;
5522                  state.keys = null;
5523              }
5524              
5525              state.notLeaf = !state.isLeaf;
5526              state.notRoot = !state.isRoot;
5527          }
5528          
5529          updateState();
5530          
5531          // use return values to update if defined
5532          var ret = cb.call(state, state.node);
5533          if (ret !== undefined && state.update) state.update(ret);
5534          
5535          if (modifiers.before) modifiers.before.call(state, state.node);
5536          
5537          if (!keepGoing) return state;
5538          
5539          if (typeof state.node == 'object'
5540          && state.node !== null && !state.circular) {
5541              parents.push(state);
5542              
5543              updateState();
5544              
5545              forEach(state.keys, function (key, i) {
5546                  path.push(key);
5547                  
5548                  if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);
5549                  
5550                  var child = walker(state.node[key]);
5551                  if (immutable && hasOwnProperty.call(state.node, key)) {
5552                      state.node[key] = child.node;
5553                  }
5554                  
5555                  child.isLast = i == state.keys.length - 1;
5556                  child.isFirst = i == 0;
5557                  
5558                  if (modifiers.post) modifiers.post.call(state, child);
5559                  
5560                  path.pop();
5561              });
5562              parents.pop();
5563          }
5564          
5565          if (modifiers.after) modifiers.after.call(state, state.node);
5566          
5567          return state;
5568      })(root).node;
5569  }
5570  
5571  function copy (src) {
5572      if (typeof src === 'object' && src !== null) {
5573          var dst;
5574          
5575          if (isArray(src)) {
5576              dst = [];
5577          }
5578          else if (isDate(src)) {
5579              dst = new Date(src.getTime ? src.getTime() : src);
5580          }
5581          else if (isRegExp(src)) {
5582              dst = new RegExp(src);
5583          }
5584          else if (isError(src)) {
5585              dst = { message: src.message };
5586          }
5587          else if (isBoolean(src)) {
5588              dst = new Boolean(src);
5589          }
5590          else if (isNumber(src)) {
5591              dst = new Number(src);
5592          }
5593          else if (isString(src)) {
5594              dst = new String(src);
5595          }
5596          else if (Object.create && Object.getPrototypeOf) {
5597              dst = Object.create(Object.getPrototypeOf(src));
5598          }
5599          else if (src.constructor === Object) {
5600              dst = {};
5601          }
5602          else {
5603              var proto =
5604                  (src.constructor && src.constructor.prototype)
5605                  || src.__proto__
5606                  || {}
5607              ;
5608              var T = function () {};
5609              T.prototype = proto;
5610              dst = new T;
5611          }
5612          
5613          forEach(objectKeys(src), function (key) {
5614              dst[key] = src[key];
5615          });
5616          return dst;
5617      }
5618      else return src;
5619  }
5620  
5621  var objectKeys = Object.keys || function keys (obj) {
5622      var res = [];
5623      for (var key in obj) res.push(key)
5624      return res;
5625  };
5626  
5627  function toS (obj) { return Object.prototype.toString.call(obj) }
5628  function isDate (obj) { return toS(obj) === '[object Date]' }
5629  function isRegExp (obj) { return toS(obj) === '[object RegExp]' }
5630  function isError (obj) { return toS(obj) === '[object Error]' }
5631  function isBoolean (obj) { return toS(obj) === '[object Boolean]' }
5632  function isNumber (obj) { return toS(obj) === '[object Number]' }
5633  function isString (obj) { return toS(obj) === '[object String]' }
5634  
5635  var isArray = Array.isArray || function isArray (xs) {
5636      return Object.prototype.toString.call(xs) === '[object Array]';
5637  };
5638  
5639  var forEach = function (xs, fn) {
5640      if (xs.forEach) return xs.forEach(fn)
5641      else for (var i = 0; i < xs.length; i++) {
5642          fn(xs[i], i, xs);
5643      }
5644  };
5645  
5646  forEach(objectKeys(Traverse.prototype), function (key) {
5647      traverse[key] = function (obj) {
5648          var args = [].slice.call(arguments, 1);
5649          var t = new Traverse(obj);
5650          return t[key].apply(t, args);
5651      };
5652  });
5653  
5654  var hasOwnProperty = Object.hasOwnProperty || function (obj, key) {
5655      return key in obj;
5656  };
5657  
5658  
5659  /***/ }),
5660  
5661  /***/ 27:
5662  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5663  
5664  "use strict";
5665  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _unsupportedIterableToArray; });
5666  /* harmony import */ var _arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25);
5667  
5668  function _unsupportedIterableToArray(o, minLen) {
5669    if (!o) return;
5670    if (typeof o === "string") return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen);
5671    var n = Object.prototype.toString.call(o).slice(8, -1);
5672    if (n === "Object" && o.constructor) n = o.constructor.name;
5673    if (n === "Map" || n === "Set") return Array.from(n);
5674    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen);
5675  }
5676  
5677  /***/ }),
5678  
5679  /***/ 28:
5680  /***/ (function(module, exports) {
5681  
5682  (function() { module.exports = this["wp"]["dom"]; }());
5683  
5684  /***/ }),
5685  
5686  /***/ 281:
5687  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5688  
5689  "use strict";
5690  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5691  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5692  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5693  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5694  
5695  
5696  /**
5697   * WordPress dependencies
5698   */
5699  
5700  var alignLeft = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5701    xmlns: "http://www.w3.org/2000/svg",
5702    viewBox: "-2 -2 24 24"
5703  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5704    d: "M12 5V3H3v2h9zm5 4V7H3v2h14zm-5 4v-2H3v2h9zm5 4v-2H3v2h14z"
5705  }));
5706  /* harmony default export */ __webpack_exports__["a"] = (alignLeft);
5707  
5708  
5709  /***/ }),
5710  
5711  /***/ 282:
5712  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5713  
5714  "use strict";
5715  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5716  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5717  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5718  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5719  
5720  
5721  /**
5722   * WordPress dependencies
5723   */
5724  
5725  var alignCenter = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5726    xmlns: "http://www.w3.org/2000/svg",
5727    viewBox: "-2 -2 24 24"
5728  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5729    d: "M14 5V3H6v2h8zm3 4V7H3v2h14zm-3 4v-2H6v2h8zm3 4v-2H3v2h14z"
5730  }));
5731  /* harmony default export */ __webpack_exports__["a"] = (alignCenter);
5732  
5733  
5734  /***/ }),
5735  
5736  /***/ 283:
5737  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5738  
5739  "use strict";
5740  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5741  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5742  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5743  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5744  
5745  
5746  /**
5747   * WordPress dependencies
5748   */
5749  
5750  var alignRight = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5751    xmlns: "http://www.w3.org/2000/svg",
5752    viewBox: "-2 -2 24 24"
5753  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5754    d: "M17 5V3H8v2h9zm0 4V7H3v2h14zm0 4v-2H8v2h9zm0 4v-2H3v2h14z"
5755  }));
5756  /* harmony default export */ __webpack_exports__["a"] = (alignRight);
5757  
5758  
5759  /***/ }),
5760  
5761  /***/ 284:
5762  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5763  
5764  "use strict";
5765  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5766  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5767  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5768  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5769  
5770  
5771  /**
5772   * WordPress dependencies
5773   */
5774  
5775  var moreHorizontal = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5776    xmlns: "http://www.w3.org/2000/svg",
5777    viewBox: "-2 -2 24 24"
5778  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5779    d: "M5 10c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm12-2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-7 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
5780  }));
5781  /* harmony default export */ __webpack_exports__["a"] = (moreHorizontal);
5782  
5783  
5784  /***/ }),
5785  
5786  /***/ 285:
5787  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5788  
5789  "use strict";
5790  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5791  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5792  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5793  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5794  
5795  
5796  /**
5797   * WordPress dependencies
5798   */
5799  
5800  var plusCircle = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5801    xmlns: "http://www.w3.org/2000/svg",
5802    viewBox: "-2 -2 24 24"
5803  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5804    d: "M10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6zM10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6z"
5805  }));
5806  /* harmony default export */ __webpack_exports__["a"] = (plusCircle);
5807  
5808  
5809  /***/ }),
5810  
5811  /***/ 286:
5812  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5813  
5814  "use strict";
5815  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5816  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5817  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5818  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5819  
5820  
5821  /**
5822   * WordPress dependencies
5823   */
5824  
5825  var pencil = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5826    xmlns: "http://www.w3.org/2000/svg",
5827    viewBox: "-2 -2 24 24"
5828  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5829    d: "M13.89 3.39l2.71 2.72c.46.46.42 1.24.03 1.64l-8.01 8.02-5.56 1.16 1.16-5.58s7.6-7.63 7.99-8.03c.39-.39 1.22-.39 1.68.07zm-2.73 2.79l-5.59 5.61 1.11 1.11 5.54-5.65zm-2.97 8.23l5.58-5.6-1.07-1.08-5.59 5.6zM13.89 3.39l2.71 2.72c.46.46.42 1.24.03 1.64l-8.01 8.02-5.56 1.16 1.16-5.58s7.6-7.63 7.99-8.03c.39-.39 1.22-.39 1.68.07zm-2.73 2.79l-5.59 5.61 1.11 1.11 5.54-5.65zm-2.97 8.23l5.58-5.6-1.07-1.08-5.59 5.6z"
5830  }));
5831  /* harmony default export */ __webpack_exports__["a"] = (pencil);
5832  
5833  
5834  /***/ }),
5835  
5836  /***/ 287:
5837  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5838  
5839  "use strict";
5840  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5841  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5842  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5843  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5844  
5845  
5846  /**
5847   * WordPress dependencies
5848   */
5849  
5850  var upload = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5851    xmlns: "http://www.w3.org/2000/svg",
5852    viewBox: "-2 -2 24 24"
5853  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5854    d: "M8 14V8H5l5-6 5 6h-3v6H8zm-2 2v-6H4v8h12.01v-8H14v6H6z"
5855  }));
5856  /* harmony default export */ __webpack_exports__["a"] = (upload);
5857  
5858  
5859  /***/ }),
5860  
5861  /***/ 288:
5862  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5863  
5864  "use strict";
5865  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5866  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5867  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5868  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5869  
5870  
5871  /**
5872   * WordPress dependencies
5873   */
5874  
5875  var chevronDown = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5876    viewBox: "0 0 24 24",
5877    xmlns: "http://www.w3.org/2000/svg"
5878  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5879    d: "M7.41,8.59L12,13.17l4.59-4.58L18,10l-6,6l-6-6L7.41,8.59z"
5880  }));
5881  /* harmony default export */ __webpack_exports__["a"] = (chevronDown);
5882  
5883  
5884  /***/ }),
5885  
5886  /***/ 289:
5887  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5888  
5889  "use strict";
5890  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5891  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
5892  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
5893  /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
5894  
5895  
5896  /**
5897   * WordPress dependencies
5898   */
5899  
5900  var chevronUp = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
5901    viewBox: "0 0 24 24",
5902    xmlns: "http://www.w3.org/2000/svg"
5903  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
5904    d: "M12,8l-6,6l1.41,1.41L12,10.83l4.59,4.58L18,14L12,8z"
5905  }));
5906  /* harmony default export */ __webpack_exports__["a"] = (chevronUp);
5907  
5908  
5909  /***/ }),
5910  
5911  /***/ 3:
5912  /***/ (function(module, exports) {
5913  
5914  (function() { module.exports = this["wp"]["components"]; }());
5915  
5916  /***/ }),
5917  
5918  /***/ 30:
5919  /***/ (function(module, exports) {
5920  
5921  (function() { module.exports = this["wp"]["url"]; }());
5922  
5923  /***/ }),
5924  
5925  /***/ 32:
5926  /***/ (function(module, exports) {
5927  
5928  (function() { module.exports = this["wp"]["hooks"]; }());
5929  
5930  /***/ }),
5931  
5932  /***/ 34:
5933  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5934  
5935  "use strict";
5936  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; });
5937  function _typeof(obj) {
5938    "@babel/helpers - typeof";
5939  
5940    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
5941      _typeof = function _typeof(obj) {
5942        return typeof obj;
5943      };
5944    } else {
5945      _typeof = function _typeof(obj) {
5946        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
5947      };
5948    }
5949  
5950    return _typeof(obj);
5951  }
5952  
5953  /***/ }),
5954  
5955  /***/ 35:
5956  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5957  
5958  "use strict";
5959  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _iterableToArray; });
5960  function _iterableToArray(iter) {
5961    if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
5962  }
5963  
5964  /***/ }),
5965  
5966  /***/ 37:
5967  /***/ (function(module, exports) {
5968  
5969  (function() { module.exports = this["wp"]["deprecated"]; }());
5970  
5971  /***/ }),
5972  
5973  /***/ 38:
5974  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5975  
5976  "use strict";
5977  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayWithHoles; });
5978  function _arrayWithHoles(arr) {
5979    if (Array.isArray(arr)) return arr;
5980  }
5981  
5982  /***/ }),
5983  
5984  /***/ 39:
5985  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5986  
5987  "use strict";
5988  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _nonIterableRest; });
5989  function _nonIterableRest() {
5990    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
5991  }
5992  
5993  /***/ }),
5994  
5995  /***/ 4:
5996  /***/ (function(module, exports) {
5997  
5998  (function() { module.exports = this["wp"]["data"]; }());
5999  
6000  /***/ }),
6001  
6002  /***/ 40:
6003  /***/ (function(module, __webpack_exports__, __webpack_require__) {
6004  
6005  "use strict";
6006  
6007  
6008  var LEAF_KEY, hasWeakMap;
6009  
6010  /**
6011   * Arbitrary value used as key for referencing cache object in WeakMap tree.
6012   *
6013   * @type {Object}
6014   */
6015  LEAF_KEY = {};
6016  
6017  /**
6018   * Whether environment supports WeakMap.
6019   *
6020   * @type {boolean}
6021   */
6022  hasWeakMap = typeof WeakMap !== 'undefined';
6023  
6024  /**
6025   * Returns the first argument as the sole entry in an array.
6026   *
6027   * @param {*} value Value to return.
6028   *
6029   * @return {Array} Value returned as entry in array.
6030   */
6031  function arrayOf( value ) {
6032      return [ value ];
6033  }
6034  
6035  /**
6036   * Returns true if the value passed is object-like, or false otherwise. A value
6037   * is object-like if it can support property assignment, e.g. object or array.
6038   *
6039   * @param {*} value Value to test.
6040   *
6041   * @return {boolean} Whether value is object-like.
6042   */
6043  function isObjectLike( value ) {
6044      return !! value && 'object' === typeof value;
6045  }
6046  
6047  /**
6048   * Creates and returns a new cache object.
6049   *
6050   * @return {Object} Cache object.
6051   */
6052  function createCache() {
6053      var cache = {
6054          clear: function() {
6055              cache.head = null;
6056          },
6057      };
6058  
6059      return cache;
6060  }
6061  
6062  /**
6063   * Returns true if entries within the two arrays are strictly equal by
6064   * reference from a starting index.
6065   *
6066   * @param {Array}  a         First array.
6067   * @param {Array}  b         Second array.
6068   * @param {number} fromIndex Index from which to start comparison.
6069   *
6070   * @return {boolean} Whether arrays are shallowly equal.
6071   */
6072  function isShallowEqual( a, b, fromIndex ) {
6073      var i;
6074  
6075      if ( a.length !== b.length ) {
6076          return false;
6077      }
6078  
6079      for ( i = fromIndex; i < a.length; i++ ) {
6080          if ( a[ i ] !== b[ i ] ) {
6081              return false;
6082          }
6083      }
6084  
6085      return true;
6086  }
6087  
6088  /**
6089   * Returns a memoized selector function. The getDependants function argument is
6090   * called before the memoized selector and is expected to return an immutable
6091   * reference or array of references on which the selector depends for computing
6092   * its own return value. The memoize cache is preserved only as long as those
6093   * dependant references remain the same. If getDependants returns a different
6094   * reference(s), the cache is cleared and the selector value regenerated.
6095   *
6096   * @param {Function} selector      Selector function.
6097   * @param {Function} getDependants Dependant getter returning an immutable
6098   *                                 reference or array of reference used in
6099   *                                 cache bust consideration.
6100   *
6101   * @return {Function} Memoized selector.
6102   */
6103  /* harmony default export */ __webpack_exports__["a"] = (function( selector, getDependants ) {
6104      var rootCache, getCache;
6105  
6106      // Use object source as dependant if getter not provided
6107      if ( ! getDependants ) {
6108          getDependants = arrayOf;
6109      }
6110  
6111      /**
6112       * Returns the root cache. If WeakMap is supported, this is assigned to the
6113       * root WeakMap cache set, otherwise it is a shared instance of the default
6114       * cache object.
6115       *
6116       * @return {(WeakMap|Object)} Root cache object.
6117       */
6118  	function getRootCache() {
6119          return rootCache;
6120      }
6121  
6122      /**
6123       * Returns the cache for a given dependants array. When possible, a WeakMap
6124       * will be used to create a unique cache for each set of dependants. This
6125       * is feasible due to the nature of WeakMap in allowing garbage collection
6126       * to occur on entries where the key object is no longer referenced. Since
6127       * WeakMap requires the key to be an object, this is only possible when the
6128       * dependant is object-like. The root cache is created as a hierarchy where
6129       * each top-level key is the first entry in a dependants set, the value a
6130       * WeakMap where each key is the next dependant, and so on. This continues
6131       * so long as the dependants are object-like. If no dependants are object-
6132       * like, then the cache is shared across all invocations.
6133       *
6134       * @see isObjectLike
6135       *
6136       * @param {Array} dependants Selector dependants.
6137       *
6138       * @return {Object} Cache object.
6139       */
6140  	function getWeakMapCache( dependants ) {
6141          var caches = rootCache,
6142              isUniqueByDependants = true,
6143              i, dependant, map, cache;
6144  
6145          for ( i = 0; i < dependants.length; i++ ) {
6146              dependant = dependants[ i ];
6147  
6148              // Can only compose WeakMap from object-like key.
6149              if ( ! isObjectLike( dependant ) ) {
6150                  isUniqueByDependants = false;
6151                  break;
6152              }
6153  
6154              // Does current segment of cache already have a WeakMap?
6155              if ( caches.has( dependant ) ) {
6156                  // Traverse into nested WeakMap.
6157                  caches = caches.get( dependant );
6158              } else {
6159                  // Create, set, and traverse into a new one.
6160                  map = new WeakMap();
6161                  caches.set( dependant, map );
6162                  caches = map;
6163              }
6164          }
6165  
6166          // We use an arbitrary (but consistent) object as key for the last item
6167          // in the WeakMap to serve as our running cache.
6168          if ( ! caches.has( LEAF_KEY ) ) {
6169              cache = createCache();
6170              cache.isUniqueByDependants = isUniqueByDependants;
6171              caches.set( LEAF_KEY, cache );
6172          }
6173  
6174          return caches.get( LEAF_KEY );
6175      }
6176  
6177      // Assign cache handler by availability of WeakMap
6178      getCache = hasWeakMap ? getWeakMapCache : getRootCache;
6179  
6180      /**
6181       * Resets root memoization cache.
6182       */
6183  	function clear() {
6184          rootCache = hasWeakMap ? new WeakMap() : createCache();
6185      }
6186  
6187      // eslint-disable-next-line jsdoc/check-param-names
6188      /**
6189       * The augmented selector call, considering first whether dependants have
6190       * changed before passing it to underlying memoize function.
6191       *
6192       * @param {Object} source    Source object for derivation.
6193       * @param {...*}   extraArgs Additional arguments to pass to selector.
6194       *
6195       * @return {*} Selector result.
6196       */
6197  	function callSelector( /* source, ...extraArgs */ ) {
6198          var len = arguments.length,
6199              cache, node, i, args, dependants;
6200  
6201          // Create copy of arguments (avoid leaking deoptimization).
6202          args = new Array( len );
6203          for ( i = 0; i < len; i++ ) {
6204              args[ i ] = arguments[ i ];
6205          }
6206  
6207          dependants = getDependants.apply( null, args );
6208          cache = getCache( dependants );
6209  
6210          // If not guaranteed uniqueness by dependants (primitive type or lack
6211          // of WeakMap support), shallow compare against last dependants and, if
6212          // references have changed, destroy cache to recalculate result.
6213          if ( ! cache.isUniqueByDependants ) {
6214              if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) {
6215                  cache.clear();
6216              }
6217  
6218              cache.lastDependants = dependants;
6219          }
6220  
6221          node = cache.head;
6222          while ( node ) {
6223              // Check whether node arguments match arguments
6224              if ( ! isShallowEqual( node.args, args, 1 ) ) {
6225                  node = node.next;
6226                  continue;
6227              }
6228  
6229              // At this point we can assume we've found a match
6230  
6231              // Surface matched node to head if not already
6232              if ( node !== cache.head ) {
6233                  // Adjust siblings to point to each other.
6234                  node.prev.next = node.next;
6235                  if ( node.next ) {
6236                      node.next.prev = node.prev;
6237                  }
6238  
6239                  node.next = cache.head;
6240                  node.prev = null;
6241                  cache.head.prev = node;
6242                  cache.head = node;
6243              }
6244  
6245              // Return immediately
6246              return node.val;
6247          }
6248  
6249          // No cached value found. Continue to insertion phase:
6250  
6251          node = {
6252              // Generate the result from original function
6253              val: selector.apply( null, args ),
6254          };
6255  
6256          // Avoid including the source object in the cache.
6257          args[ 0 ] = null;
6258          node.args = args;
6259  
6260          // Don't need to check whether node is already head, since it would
6261          // have been returned above already if it was
6262  
6263          // Shift existing head down list
6264          if ( cache.head ) {
6265              cache.head.prev = node;
6266              node.next = cache.head;
6267          }
6268  
6269          cache.head = node;
6270  
6271          return node.val;
6272      }
6273  
6274      callSelector.getDependants = getDependants;
6275      callSelector.clear = clear;
6276      clear();
6277  
6278      return callSelector;
6279  });
6280  
6281  
6282  /***/ }),
6283  
6284  /***/ 41:
6285  /***/ (function(module, exports) {
6286  
6287  (function() { module.exports = this["wp"]["blob"]; }());
6288  
6289  /***/ }),
6290  
6291  /***/ 421:
6292  /***/ (function(module, __webpack_exports__, __webpack_require__) {
6293  
6294  "use strict";
6295  __webpack_require__.r(__webpack_exports__);
6296  var actions_namespaceObject = {};
6297  __webpack_require__.r(actions_namespaceObject);
6298  __webpack_require__.d(actions_namespaceObject, "resetBlocks", function() { return actions_resetBlocks; });
6299  __webpack_require__.d(actions_namespaceObject, "resetSelection", function() { return actions_resetSelection; });
6300  __webpack_require__.d(actions_namespaceObject, "receiveBlocks", function() { return receiveBlocks; });
6301  __webpack_require__.d(actions_namespaceObject, "updateBlockAttributes", function() { return actions_updateBlockAttributes; });
6302  __webpack_require__.d(actions_namespaceObject, "updateBlock", function() { return actions_updateBlock; });
6303  __webpack_require__.d(actions_namespaceObject, "selectBlock", function() { return actions_selectBlock; });
6304  __webpack_require__.d(actions_namespaceObject, "selectPreviousBlock", function() { return selectPreviousBlock; });
6305  __webpack_require__.d(actions_namespaceObject, "selectNextBlock", function() { return selectNextBlock; });
6306  __webpack_require__.d(actions_namespaceObject, "startMultiSelect", function() { return actions_startMultiSelect; });
6307  __webpack_require__.d(actions_namespaceObject, "stopMultiSelect", function() { return actions_stopMultiSelect; });
6308  __webpack_require__.d(actions_namespaceObject, "multiSelect", function() { return actions_multiSelect; });
6309  __webpack_require__.d(actions_namespaceObject, "clearSelectedBlock", function() { return actions_clearSelectedBlock; });
6310  __webpack_require__.d(actions_namespaceObject, "toggleSelection", function() { return actions_toggleSelection; });
6311  __webpack_require__.d(actions_namespaceObject, "replaceBlocks", function() { return actions_replaceBlocks; });
6312  __webpack_require__.d(actions_namespaceObject, "replaceBlock", function() { return replaceBlock; });
6313  __webpack_require__.d(actions_namespaceObject, "moveBlocksDown", function() { return actions_moveBlocksDown; });
6314  __webpack_require__.d(actions_namespaceObject, "moveBlocksUp", function() { return actions_moveBlocksUp; });
6315  __webpack_require__.d(actions_namespaceObject, "moveBlockToPosition", function() { return actions_moveBlockToPosition; });
6316  __webpack_require__.d(actions_namespaceObject, "insertBlock", function() { return actions_insertBlock; });
6317  __webpack_require__.d(actions_namespaceObject, "insertBlocks", function() { return actions_insertBlocks; });
6318  __webpack_require__.d(actions_namespaceObject, "showInsertionPoint", function() { return actions_showInsertionPoint; });
6319  __webpack_require__.d(actions_namespaceObject, "hideInsertionPoint", function() { return actions_hideInsertionPoint; });
6320  __webpack_require__.d(actions_namespaceObject, "setTemplateValidity", function() { return setTemplateValidity; });
6321  __webpack_require__.d(actions_namespaceObject, "synchronizeTemplate", function() { return synchronizeTemplate; });
6322  __webpack_require__.d(actions_namespaceObject, "mergeBlocks", function() { return actions_mergeBlocks; });
6323  __webpack_require__.d(actions_namespaceObject, "removeBlocks", function() { return actions_removeBlocks; });
6324  __webpack_require__.d(actions_namespaceObject, "removeBlock", function() { return actions_removeBlock; });
6325  __webpack_require__.d(actions_namespaceObject, "replaceInnerBlocks", function() { return actions_replaceInnerBlocks; });
6326  __webpack_require__.d(actions_namespaceObject, "toggleBlockMode", function() { return toggleBlockMode; });
6327  __webpack_require__.d(actions_namespaceObject, "startTyping", function() { return actions_startTyping; });
6328  __webpack_require__.d(actions_namespaceObject, "stopTyping", function() { return actions_stopTyping; });
6329  __webpack_require__.d(actions_namespaceObject, "startDraggingBlocks", function() { return actions_startDraggingBlocks; });
6330  __webpack_require__.d(actions_namespaceObject, "stopDraggingBlocks", function() { return actions_stopDraggingBlocks; });
6331  __webpack_require__.d(actions_namespaceObject, "enterFormattedText", function() { return actions_enterFormattedText; });
6332  __webpack_require__.d(actions_namespaceObject, "exitFormattedText", function() { return actions_exitFormattedText; });
6333  __webpack_require__.d(actions_namespaceObject, "selectionChange", function() { return actions_selectionChange; });
6334  __webpack_require__.d(actions_namespaceObject, "insertDefaultBlock", function() { return actions_insertDefaultBlock; });
6335  __webpack_require__.d(actions_namespaceObject, "updateBlockListSettings", function() { return updateBlockListSettings; });
6336  __webpack_require__.d(actions_namespaceObject, "updateSettings", function() { return actions_updateSettings; });
6337  __webpack_require__.d(actions_namespaceObject, "__unstableSaveReusableBlock", function() { return __unstableSaveReusableBlock; });
6338  __webpack_require__.d(actions_namespaceObject, "__unstableMarkLastChangeAsPersistent", function() { return actions_unstableMarkLastChangeAsPersistent; });
6339  __webpack_require__.d(actions_namespaceObject, "__unstableMarkNextChangeAsNotPersistent", function() { return __unstableMarkNextChangeAsNotPersistent; });
6340  __webpack_require__.d(actions_namespaceObject, "__unstableMarkAutomaticChange", function() { return actions_unstableMarkAutomaticChange; });
6341  __webpack_require__.d(actions_namespaceObject, "setNavigationMode", function() { return actions_setNavigationMode; });
6342  __webpack_require__.d(actions_namespaceObject, "duplicateBlocks", function() { return actions_duplicateBlocks; });
6343  __webpack_require__.d(actions_namespaceObject, "insertBeforeBlock", function() { return actions_insertBeforeBlock; });
6344  __webpack_require__.d(actions_namespaceObject, "insertAfterBlock", function() { return actions_insertAfterBlock; });
6345  var selectors_namespaceObject = {};
6346  __webpack_require__.r(selectors_namespaceObject);
6347  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_HIGH", function() { return INSERTER_UTILITY_HIGH; });
6348  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_MEDIUM", function() { return INSERTER_UTILITY_MEDIUM; });
6349  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_LOW", function() { return INSERTER_UTILITY_LOW; });
6350  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_NONE", function() { return INSERTER_UTILITY_NONE; });
6351  __webpack_require__.d(selectors_namespaceObject, "getBlockName", function() { return selectors_getBlockName; });
6352  __webpack_require__.d(selectors_namespaceObject, "isBlockValid", function() { return selectors_isBlockValid; });
6353  __webpack_require__.d(selectors_namespaceObject, "getBlockAttributes", function() { return getBlockAttributes; });
6354  __webpack_require__.d(selectors_namespaceObject, "getBlock", function() { return selectors_getBlock; });
6355  __webpack_require__.d(selectors_namespaceObject, "__unstableGetBlockWithoutInnerBlocks", function() { return selectors_unstableGetBlockWithoutInnerBlocks; });
6356  __webpack_require__.d(selectors_namespaceObject, "getBlocks", function() { return selectors_getBlocks; });
6357  __webpack_require__.d(selectors_namespaceObject, "getClientIdsOfDescendants", function() { return selectors_getClientIdsOfDescendants; });
6358  __webpack_require__.d(selectors_namespaceObject, "getClientIdsWithDescendants", function() { return getClientIdsWithDescendants; });
6359  __webpack_require__.d(selectors_namespaceObject, "getGlobalBlockCount", function() { return getGlobalBlockCount; });
6360  __webpack_require__.d(selectors_namespaceObject, "getBlocksByClientId", function() { return selectors_getBlocksByClientId; });
6361  __webpack_require__.d(selectors_namespaceObject, "getBlockCount", function() { return selectors_getBlockCount; });
6362  __webpack_require__.d(selectors_namespaceObject, "getSelectionStart", function() { return selectors_getSelectionStart; });
6363  __webpack_require__.d(selectors_namespaceObject, "getSelectionEnd", function() { return selectors_getSelectionEnd; });
6364  __webpack_require__.d(selectors_namespaceObject, "getBlockSelectionStart", function() { return getBlockSelectionStart; });
6365  __webpack_require__.d(selectors_namespaceObject, "getBlockSelectionEnd", function() { return getBlockSelectionEnd; });
6366  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockCount", function() { return selectors_getSelectedBlockCount; });
6367  __webpack_require__.d(selectors_namespaceObject, "hasSelectedBlock", function() { return hasSelectedBlock; });
6368  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientId", function() { return selectors_getSelectedBlockClientId; });
6369  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlock", function() { return selectors_getSelectedBlock; });
6370  __webpack_require__.d(selectors_namespaceObject, "getBlockRootClientId", function() { return selectors_getBlockRootClientId; });
6371  __webpack_require__.d(selectors_namespaceObject, "getBlockParents", function() { return selectors_getBlockParents; });
6372  __webpack_require__.d(selectors_namespaceObject, "getBlockParentsByBlockName", function() { return getBlockParentsByBlockName; });
6373  __webpack_require__.d(selectors_namespaceObject, "getBlockHierarchyRootClientId", function() { return getBlockHierarchyRootClientId; });
6374  __webpack_require__.d(selectors_namespaceObject, "getLowestCommonAncestorWithSelectedBlock", function() { return getLowestCommonAncestorWithSelectedBlock; });
6375  __webpack_require__.d(selectors_namespaceObject, "getAdjacentBlockClientId", function() { return getAdjacentBlockClientId; });
6376  __webpack_require__.d(selectors_namespaceObject, "getPreviousBlockClientId", function() { return getPreviousBlockClientId; });
6377  __webpack_require__.d(selectors_namespaceObject, "getNextBlockClientId", function() { return getNextBlockClientId; });
6378  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlocksInitialCaretPosition", function() { return selectors_getSelectedBlocksInitialCaretPosition; });
6379  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientIds", function() { return selectors_getSelectedBlockClientIds; });
6380  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlockClientIds", function() { return getMultiSelectedBlockClientIds; });
6381  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocks", function() { return getMultiSelectedBlocks; });
6382  __webpack_require__.d(selectors_namespaceObject, "getFirstMultiSelectedBlockClientId", function() { return selectors_getFirstMultiSelectedBlockClientId; });
6383  __webpack_require__.d(selectors_namespaceObject, "getLastMultiSelectedBlockClientId", function() { return selectors_getLastMultiSelectedBlockClientId; });
6384  __webpack_require__.d(selectors_namespaceObject, "isFirstMultiSelectedBlock", function() { return selectors_isFirstMultiSelectedBlock; });
6385  __webpack_require__.d(selectors_namespaceObject, "isBlockMultiSelected", function() { return selectors_isBlockMultiSelected; });
6386  __webpack_require__.d(selectors_namespaceObject, "isAncestorMultiSelected", function() { return selectors_isAncestorMultiSelected; });
6387  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksStartClientId", function() { return getMultiSelectedBlocksStartClientId; });
6388  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksEndClientId", function() { return getMultiSelectedBlocksEndClientId; });
6389  __webpack_require__.d(selectors_namespaceObject, "getBlockOrder", function() { return selectors_getBlockOrder; });
6390  __webpack_require__.d(selectors_namespaceObject, "getBlockIndex", function() { return selectors_getBlockIndex; });
6391  __webpack_require__.d(selectors_namespaceObject, "isBlockSelected", function() { return selectors_isBlockSelected; });
6392  __webpack_require__.d(selectors_namespaceObject, "hasSelectedInnerBlock", function() { return selectors_hasSelectedInnerBlock; });
6393  __webpack_require__.d(selectors_namespaceObject, "isBlockWithinSelection", function() { return isBlockWithinSelection; });
6394  __webpack_require__.d(selectors_namespaceObject, "hasMultiSelection", function() { return selectors_hasMultiSelection; });
6395  __webpack_require__.d(selectors_namespaceObject, "isMultiSelecting", function() { return selectors_isMultiSelecting; });
6396  __webpack_require__.d(selectors_namespaceObject, "isSelectionEnabled", function() { return selectors_isSelectionEnabled; });
6397  __webpack_require__.d(selectors_namespaceObject, "getBlockMode", function() { return selectors_getBlockMode; });
6398  __webpack_require__.d(selectors_namespaceObject, "isTyping", function() { return selectors_isTyping; });
6399  __webpack_require__.d(selectors_namespaceObject, "isDraggingBlocks", function() { return selectors_isDraggingBlocks; });
6400  __webpack_require__.d(selectors_namespaceObject, "isCaretWithinFormattedText", function() { return selectors_isCaretWithinFormattedText; });
6401  __webpack_require__.d(selectors_namespaceObject, "getBlockInsertionPoint", function() { return getBlockInsertionPoint; });
6402  __webpack_require__.d(selectors_namespaceObject, "isBlockInsertionPointVisible", function() { return isBlockInsertionPointVisible; });
6403  __webpack_require__.d(selectors_namespaceObject, "isValidTemplate", function() { return isValidTemplate; });
6404  __webpack_require__.d(selectors_namespaceObject, "getTemplate", function() { return getTemplate; });
6405  __webpack_require__.d(selectors_namespaceObject, "getTemplateLock", function() { return selectors_getTemplateLock; });
6406  __webpack_require__.d(selectors_namespaceObject, "canInsertBlockType", function() { return selectors_canInsertBlockType; });
6407  __webpack_require__.d(selectors_namespaceObject, "getInserterItems", function() { return selectors_getInserterItems; });
6408  __webpack_require__.d(selectors_namespaceObject, "hasInserterItems", function() { return selectors_hasInserterItems; });
6409  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetAllowedBlocks", function() { return selectors_experimentalGetAllowedBlocks; });
6410  __webpack_require__.d(selectors_namespaceObject, "getBlockListSettings", function() { return selectors_getBlockListSettings; });
6411  __webpack_require__.d(selectors_namespaceObject, "getSettings", function() { return selectors_getSettings; });
6412  __webpack_require__.d(selectors_namespaceObject, "isLastBlockChangePersistent", function() { return selectors_isLastBlockChangePersistent; });
6413  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetBlockListSettingsForBlocks", function() { return selectors_experimentalGetBlockListSettingsForBlocks; });
6414  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetParsedReusableBlock", function() { return __experimentalGetParsedReusableBlock; });
6415  __webpack_require__.d(selectors_namespaceObject, "__unstableIsLastBlockChangeIgnored", function() { return selectors_unstableIsLastBlockChangeIgnored; });
6416  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetLastBlockAttributeChanges", function() { return __experimentalGetLastBlockAttributeChanges; });
6417  __webpack_require__.d(selectors_namespaceObject, "isNavigationMode", function() { return selectors_isNavigationMode; });
6418  __webpack_require__.d(selectors_namespaceObject, "didAutomaticChange", function() { return selectors_didAutomaticChange; });
6419  
6420  // EXTERNAL MODULE: external {"this":["wp","blocks"]}
6421  var external_this_wp_blocks_ = __webpack_require__(10);
6422  
6423  // EXTERNAL MODULE: external {"this":["wp","richText"]}
6424  var external_this_wp_richText_ = __webpack_require__(24);
6425  
6426  // EXTERNAL MODULE: external {"this":["wp","viewport"]}
6427  var external_this_wp_viewport_ = __webpack_require__(56);
6428  
6429  // EXTERNAL MODULE: external {"this":["wp","keyboardShortcuts"]}
6430  var external_this_wp_keyboardShortcuts_ = __webpack_require__(48);
6431  
6432  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
6433  var defineProperty = __webpack_require__(5);
6434  
6435  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
6436  var esm_extends = __webpack_require__(12);
6437  
6438  // EXTERNAL MODULE: external {"this":["wp","element"]}
6439  var external_this_wp_element_ = __webpack_require__(0);
6440  
6441  // EXTERNAL MODULE: ./node_modules/classnames/index.js
6442  var classnames = __webpack_require__(11);
6443  var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
6444  
6445  // EXTERNAL MODULE: external {"this":"lodash"}
6446  var external_this_lodash_ = __webpack_require__(2);
6447  
6448  // EXTERNAL MODULE: external {"this":["wp","compose"]}
6449  var external_this_wp_compose_ = __webpack_require__(8);
6450  
6451  // EXTERNAL MODULE: external {"this":["wp","hooks"]}
6452  var external_this_wp_hooks_ = __webpack_require__(32);
6453  
6454  // EXTERNAL MODULE: external {"this":["wp","data"]}
6455  var external_this_wp_data_ = __webpack_require__(4);
6456  
6457  // EXTERNAL MODULE: ./node_modules/tinycolor2/tinycolor.js
6458  var tinycolor = __webpack_require__(54);
6459  var tinycolor_default = /*#__PURE__*/__webpack_require__.n(tinycolor);
6460  
6461  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/utils.js
6462  /**
6463   * External dependencies
6464   */
6465  
6466  
6467  /**
6468   * Provided an array of color objects as set by the theme or by the editor defaults,
6469   * and the values of the defined color or custom color returns a color object describing the color.
6470   *
6471   * @param {Array}   colors       Array of color objects as set by the theme or by the editor defaults.
6472   * @param {?string} definedColor A string containing the color slug.
6473   * @param {?string} customColor  A string containing the customColor value.
6474   *
6475   * @return {?Object} If definedColor is passed and the name is found in colors,
6476   *                   the color object exactly as set by the theme or editor defaults is returned.
6477   *                   Otherwise, an object that just sets the color is defined.
6478   */
6479  
6480  var utils_getColorObjectByAttributeValues = function getColorObjectByAttributeValues(colors, definedColor, customColor) {
6481    if (definedColor) {
6482      var colorObj = Object(external_this_lodash_["find"])(colors, {
6483        slug: definedColor
6484      });
6485  
6486      if (colorObj) {
6487        return colorObj;
6488      }
6489    }
6490  
6491    return {
6492      color: customColor
6493    };
6494  };
6495  /**
6496   * Provided an array of color objects as set by the theme or by the editor defaults, and a color value returns the color object matching that value or undefined.
6497   *
6498   * @param {Array}   colors      Array of color objects as set by the theme or by the editor defaults.
6499   * @param {?string} colorValue  A string containing the color value.
6500   *
6501   * @return {?Object} Color object included in the colors array whose color property equals colorValue.
6502   *                   Returns undefined if no color object matches this requirement.
6503   */
6504  
6505  var utils_getColorObjectByColorValue = function getColorObjectByColorValue(colors, colorValue) {
6506    return Object(external_this_lodash_["find"])(colors, {
6507      color: colorValue
6508    });
6509  };
6510  /**
6511   * Returns a class based on the context a color is being used and its slug.
6512   *
6513   * @param {string} colorContextName Context/place where color is being used e.g: background, text etc...
6514   * @param {string} colorSlug        Slug of the color.
6515   *
6516   * @return {?string} String with the class corresponding to the color in the provided context.
6517   *                   Returns undefined if either colorContextName or colorSlug are not provided.
6518   */
6519  
6520  function getColorClassName(colorContextName, colorSlug) {
6521    if (!colorContextName || !colorSlug) {
6522      return undefined;
6523    }
6524  
6525    return "has-".concat(Object(external_this_lodash_["kebabCase"])(colorSlug), "-").concat(colorContextName);
6526  }
6527  /**
6528   * Given an array of color objects and a color value returns the color value of the most readable color in the array.
6529   *
6530   * @param {Array}   colors     Array of color objects as set by the theme or by the editor defaults.
6531   * @param {?string} colorValue A string containing the color value.
6532   *
6533   * @return {string} String with the color value of the most readable color.
6534   */
6535  
6536  function utils_getMostReadableColor(colors, colorValue) {
6537    return tinycolor_default.a.mostReadable(colorValue, Object(external_this_lodash_["map"])(colors, 'color')).toHexString();
6538  }
6539  
6540  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
6541  var classCallCheck = __webpack_require__(14);
6542  
6543  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
6544  var createClass = __webpack_require__(13);
6545  
6546  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
6547  var possibleConstructorReturn = __webpack_require__(15);
6548  
6549  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
6550  var getPrototypeOf = __webpack_require__(16);
6551  
6552  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
6553  var assertThisInitialized = __webpack_require__(7);
6554  
6555  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules
6556  var inherits = __webpack_require__(17);
6557  
6558  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/with-colors.js
6559  
6560  
6561  
6562  
6563  
6564  
6565  
6566  
6567  
6568  
6569  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
6570  
6571  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6572  
6573  /**
6574   * External dependencies
6575   */
6576  
6577  /**
6578   * WordPress dependencies
6579   */
6580  
6581  
6582  
6583  
6584  /**
6585   * Internal dependencies
6586   */
6587  
6588  
6589  var DEFAULT_COLORS = [];
6590  /**
6591   * Higher order component factory for injecting the `colorsArray` argument as
6592   * the colors prop in the `withCustomColors` HOC.
6593   *
6594   * @param {Array} colorsArray An array of color objects.
6595   *
6596   * @return {Function} The higher order component.
6597   */
6598  
6599  var with_colors_withCustomColorPalette = function withCustomColorPalette(colorsArray) {
6600    return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (WrappedComponent) {
6601      return function (props) {
6602        return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(esm_extends["a" /* default */])({}, props, {
6603          colors: colorsArray
6604        }));
6605      };
6606    }, 'withCustomColorPalette');
6607  };
6608  /**
6609   * Higher order component factory for injecting the editor colors as the
6610   * `colors` prop in the `withColors` HOC.
6611   *
6612   * @return {Function} The higher order component.
6613   */
6614  
6615  
6616  var with_colors_withEditorColorPalette = function withEditorColorPalette() {
6617    return Object(external_this_wp_data_["withSelect"])(function (select) {
6618      var settings = select('core/block-editor').getSettings();
6619      return {
6620        colors: Object(external_this_lodash_["get"])(settings, ['colors'], DEFAULT_COLORS)
6621      };
6622    });
6623  };
6624  /**
6625   * Helper function used with `createHigherOrderComponent` to create
6626   * higher order components for managing color logic.
6627   *
6628   * @param {Array}    colorTypes       An array of color types (e.g. 'backgroundColor, borderColor).
6629   * @param {Function} withColorPalette A HOC for injecting the 'colors' prop into the WrappedComponent.
6630   *
6631   * @return {WPComponent} The component that can be used as a HOC.
6632   */
6633  
6634  
6635  function createColorHOC(colorTypes, withColorPalette) {
6636    var colorMap = Object(external_this_lodash_["reduce"])(colorTypes, function (colorObject, colorType) {
6637      return _objectSpread({}, colorObject, {}, Object(external_this_lodash_["isString"])(colorType) ? Object(defineProperty["a" /* default */])({}, colorType, Object(external_this_lodash_["kebabCase"])(colorType)) : colorType);
6638    }, {});
6639    return Object(external_this_wp_compose_["compose"])([withColorPalette, function (WrappedComponent) {
6640      return (
6641        /*#__PURE__*/
6642        function (_Component) {
6643          Object(inherits["a" /* default */])(_class, _Component);
6644  
6645          function _class(props) {
6646            var _this;
6647  
6648            Object(classCallCheck["a" /* default */])(this, _class);
6649  
6650            _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(_class).call(this, props));
6651            _this.setters = _this.createSetters();
6652            _this.colorUtils = {
6653              getMostReadableColor: _this.getMostReadableColor.bind(Object(assertThisInitialized["a" /* default */])(_this))
6654            };
6655            _this.state = {};
6656            return _this;
6657          }
6658  
6659          Object(createClass["a" /* default */])(_class, [{
6660            key: "getMostReadableColor",
6661            value: function getMostReadableColor(colorValue) {
6662              var colors = this.props.colors;
6663              return utils_getMostReadableColor(colors, colorValue);
6664            }
6665          }, {
6666            key: "createSetters",
6667            value: function createSetters() {
6668              var _this2 = this;
6669  
6670              return Object(external_this_lodash_["reduce"])(colorMap, function (settersAccumulator, colorContext, colorAttributeName) {
6671                var upperFirstColorAttributeName = Object(external_this_lodash_["upperFirst"])(colorAttributeName);
6672                var customColorAttributeName = "custom".concat(upperFirstColorAttributeName);
6673                settersAccumulator["set".concat(upperFirstColorAttributeName)] = _this2.createSetColor(colorAttributeName, customColorAttributeName);
6674                return settersAccumulator;
6675              }, {});
6676            }
6677          }, {
6678            key: "createSetColor",
6679            value: function createSetColor(colorAttributeName, customColorAttributeName) {
6680              var _this3 = this;
6681  
6682              return function (colorValue) {
6683                var _this3$props$setAttri;
6684  
6685                var colorObject = utils_getColorObjectByColorValue(_this3.props.colors, colorValue);
6686  
6687                _this3.props.setAttributes((_this3$props$setAttri = {}, Object(defineProperty["a" /* default */])(_this3$props$setAttri, colorAttributeName, colorObject && colorObject.slug ? colorObject.slug : undefined), Object(defineProperty["a" /* default */])(_this3$props$setAttri, customColorAttributeName, colorObject && colorObject.slug ? undefined : colorValue), _this3$props$setAttri));
6688              };
6689            }
6690          }, {
6691            key: "render",
6692            value: function render() {
6693              return Object(external_this_wp_element_["createElement"])(WrappedComponent, _objectSpread({}, this.props, {
6694                colors: undefined
6695              }, this.state, {}, this.setters, {
6696                colorUtils: this.colorUtils
6697              }));
6698            }
6699          }], [{
6700            key: "getDerivedStateFromProps",
6701            value: function getDerivedStateFromProps(_ref2, previousState) {
6702              var attributes = _ref2.attributes,
6703                  colors = _ref2.colors;
6704              return Object(external_this_lodash_["reduce"])(colorMap, function (newState, colorContext, colorAttributeName) {
6705                var colorObject = utils_getColorObjectByAttributeValues(colors, attributes[colorAttributeName], attributes["custom".concat(Object(external_this_lodash_["upperFirst"])(colorAttributeName))]);
6706                var previousColorObject = previousState[colorAttributeName];
6707                var previousColor = Object(external_this_lodash_["get"])(previousColorObject, ['color']);
6708                /**
6709                 * The "and previousColorObject" condition checks that a previous color object was already computed.
6710                 * At the start previousColorObject and colorValue are both equal to undefined
6711                 * bus as previousColorObject does not exist we should compute the object.
6712                 */
6713  
6714                if (previousColor === colorObject.color && previousColorObject) {
6715                  newState[colorAttributeName] = previousColorObject;
6716                } else {
6717                  newState[colorAttributeName] = _objectSpread({}, colorObject, {
6718                    class: getColorClassName(colorContext, colorObject.slug)
6719                  });
6720                }
6721  
6722                return newState;
6723              }, {});
6724            }
6725          }]);
6726  
6727          return _class;
6728        }(external_this_wp_element_["Component"])
6729      );
6730    }]);
6731  }
6732  /**
6733   * A higher-order component factory for creating a 'withCustomColors' HOC, which handles color logic
6734   * for class generation color value, retrieval and color attribute setting.
6735   *
6736   * Use this higher-order component to work with a custom set of colors.
6737   *
6738   * @example
6739   *
6740   * ```jsx
6741   * const CUSTOM_COLORS = [ { name: 'Red', slug: 'red', color: '#ff0000' }, { name: 'Blue', slug: 'blue', color: '#0000ff' } ];
6742   * const withCustomColors = createCustomColorsHOC( CUSTOM_COLORS );
6743   * // ...
6744   * export default compose(
6745   *     withCustomColors( 'backgroundColor', 'borderColor' ),
6746   *     MyColorfulComponent,
6747   * );
6748   * ```
6749   *
6750   * @param {Array} colorsArray The array of color objects (name, slug, color, etc... ).
6751   *
6752   * @return {Function} Higher-order component.
6753   */
6754  
6755  
6756  function createCustomColorsHOC(colorsArray) {
6757    return function () {
6758      var withColorPalette = with_colors_withCustomColorPalette(colorsArray);
6759  
6760      for (var _len = arguments.length, colorTypes = new Array(_len), _key = 0; _key < _len; _key++) {
6761        colorTypes[_key] = arguments[_key];
6762      }
6763  
6764      return Object(external_this_wp_compose_["createHigherOrderComponent"])(createColorHOC(colorTypes, withColorPalette), 'withCustomColors');
6765    };
6766  }
6767  /**
6768   * A higher-order component, which handles color logic for class generation color value, retrieval and color attribute setting.
6769   *
6770   * For use with the default editor/theme color palette.
6771   *
6772   * @example
6773   *
6774   * ```jsx
6775   * export default compose(
6776   *     withColors( 'backgroundColor', { textColor: 'color' } ),
6777   *     MyColorfulComponent,
6778   * );
6779   * ```
6780   *
6781   * @param {...(Object|string)} colorTypes The arguments can be strings or objects. If the argument is an object,
6782   *                                        it should contain the color attribute name as key and the color context as value.
6783   *                                        If the argument is a string the value should be the color attribute name,
6784   *                                        the color context is computed by applying a kebab case transform to the value.
6785   *                                        Color context represents the context/place where the color is going to be used.
6786   *                                        The class name of the color is generated using 'has' followed by the color name
6787   *                                        and ending with the color context all in kebab case e.g: has-green-background-color.
6788   *
6789   * @return {Function} Higher-order component.
6790   */
6791  
6792  function withColors() {
6793    var withColorPalette = with_colors_withEditorColorPalette();
6794  
6795    for (var _len2 = arguments.length, colorTypes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
6796      colorTypes[_key2] = arguments[_key2];
6797    }
6798  
6799    return Object(external_this_wp_compose_["createHigherOrderComponent"])(createColorHOC(colorTypes, withColorPalette), 'withColors');
6800  }
6801  
6802  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules
6803  var toConsumableArray = __webpack_require__(18);
6804  
6805  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
6806  var slicedToArray = __webpack_require__(20);
6807  
6808  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
6809  var objectWithoutProperties = __webpack_require__(19);
6810  
6811  // EXTERNAL MODULE: ./node_modules/memize/index.js
6812  var memize = __webpack_require__(46);
6813  var memize_default = /*#__PURE__*/__webpack_require__.n(memize);
6814  
6815  // EXTERNAL MODULE: external {"this":["wp","i18n"]}
6816  var external_this_wp_i18n_ = __webpack_require__(1);
6817  
6818  // EXTERNAL MODULE: external {"this":["wp","components"]}
6819  var external_this_wp_components_ = __webpack_require__(3);
6820  
6821  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/edit.js
6822  
6823  
6824  
6825  /**
6826   * External dependencies
6827   */
6828  
6829  /**
6830   * WordPress dependencies
6831   */
6832  
6833  
6834  
6835  var edit_Edit = function Edit(props) {
6836    var _props$attributes = props.attributes,
6837        attributes = _props$attributes === void 0 ? {} : _props$attributes,
6838        name = props.name;
6839    var blockType = Object(external_this_wp_blocks_["getBlockType"])(name);
6840  
6841    if (!blockType) {
6842      return null;
6843    } // Generate a class name for the block's editable form
6844  
6845  
6846    var generatedClassName = Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'className', true) ? Object(external_this_wp_blocks_["getBlockDefaultClassName"])(name) : null;
6847    var className = classnames_default()(generatedClassName, attributes.className); // `edit` and `save` are functions or components describing the markup
6848    // with which a block is displayed. If `blockType` is valid, assign
6849    // them preferentially as the render value for the block.
6850  
6851    var Component = blockType.edit || blockType.save;
6852    return Object(external_this_wp_element_["createElement"])(Component, Object(esm_extends["a" /* default */])({}, props, {
6853      className: className
6854    }));
6855  };
6856  /* harmony default export */ var edit = (Object(external_this_wp_components_["withFilters"])('editor.BlockEdit')(edit_Edit));
6857  
6858  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/context.js
6859  
6860  
6861  
6862  /**
6863   * External dependencies
6864   */
6865  
6866  /**
6867   * WordPress dependencies
6868   */
6869  
6870  
6871  
6872  var Context = Object(external_this_wp_element_["createContext"])({
6873    name: '',
6874    isSelected: false,
6875    focusedElement: null,
6876    setFocusedElement: external_this_lodash_["noop"],
6877    clientId: null
6878  });
6879  var Provider = Context.Provider,
6880      Consumer = Context.Consumer;
6881  
6882  /**
6883   * A hook that returns the block edit context.
6884   *
6885   * @return {Object} Block edit context
6886   */
6887  
6888  function useBlockEditContext() {
6889    return Object(external_this_wp_element_["useContext"])(Context);
6890  }
6891  /**
6892   * A Higher Order Component used to inject BlockEdit context to the
6893   * wrapped component.
6894   *
6895   * @param {Function} mapContextToProps Function called on every context change,
6896   *                                     expected to return object of props to
6897   *                                     merge with the component's own props.
6898   *
6899   * @return {WPComponent} Enhanced component with injected context as props.
6900   */
6901  
6902  var context_withBlockEditContext = function withBlockEditContext(mapContextToProps) {
6903    return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (OriginalComponent) {
6904      return function (props) {
6905        return Object(external_this_wp_element_["createElement"])(Consumer, null, function (context) {
6906          return Object(external_this_wp_element_["createElement"])(OriginalComponent, Object(esm_extends["a" /* default */])({}, props, mapContextToProps(context, props)));
6907        });
6908      };
6909    }, 'withBlockEditContext');
6910  };
6911  /**
6912   * A Higher Order Component used to render conditionally the wrapped
6913   * component only when the BlockEdit has selected state set.
6914   *
6915   * @param {WPComponent} OriginalComponent Component to wrap.
6916   *
6917   * @return {WPComponent} Component which renders only when the BlockEdit is selected.
6918   */
6919  
6920  var ifBlockEditSelected = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (OriginalComponent) {
6921    return function (props) {
6922      return Object(external_this_wp_element_["createElement"])(Consumer, null, function (_ref) {
6923        var isSelected = _ref.isSelected;
6924        return isSelected && Object(external_this_wp_element_["createElement"])(OriginalComponent, props);
6925      });
6926    };
6927  }, 'ifBlockEditSelected');
6928  
6929  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/index.js
6930  
6931  
6932  
6933  
6934  
6935  
6936  
6937  
6938  /**
6939   * External dependencies
6940   */
6941  
6942  /**
6943   * WordPress dependencies
6944   */
6945  
6946  
6947  /**
6948   * Internal dependencies
6949   */
6950  
6951  
6952  
6953  
6954  var block_edit_BlockEdit =
6955  /*#__PURE__*/
6956  function (_Component) {
6957    Object(inherits["a" /* default */])(BlockEdit, _Component);
6958  
6959    function BlockEdit() {
6960      var _this;
6961  
6962      Object(classCallCheck["a" /* default */])(this, BlockEdit);
6963  
6964      _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockEdit).apply(this, arguments)); // It is important to return the same object if props haven't changed
6965      // to avoid  unnecessary rerenders.
6966      // See https://reactjs.org/docs/context.html#caveats.
6967  
6968      _this.propsToContext = memize_default()(_this.propsToContext.bind(Object(assertThisInitialized["a" /* default */])(_this)), {
6969        maxSize: 1
6970      });
6971      return _this;
6972    }
6973  
6974    Object(createClass["a" /* default */])(BlockEdit, [{
6975      key: "propsToContext",
6976      value: function propsToContext(name, isSelected, clientId, onFocus, onCaretVerticalPositionChange) {
6977        return {
6978          name: name,
6979          isSelected: isSelected,
6980          clientId: clientId,
6981          onFocus: onFocus,
6982          onCaretVerticalPositionChange: onCaretVerticalPositionChange
6983        };
6984      }
6985    }, {
6986      key: "render",
6987      value: function render() {
6988        var _this$props = this.props,
6989            name = _this$props.name,
6990            isSelected = _this$props.isSelected,
6991            clientId = _this$props.clientId,
6992            onFocus = _this$props.onFocus,
6993            onCaretVerticalPositionChange = _this$props.onCaretVerticalPositionChange;
6994        var value = this.propsToContext(name, isSelected, clientId, onFocus, onCaretVerticalPositionChange);
6995        return Object(external_this_wp_element_["createElement"])(Provider, {
6996          value: value
6997        }, Object(external_this_wp_element_["createElement"])(edit, this.props));
6998      }
6999    }]);
7000  
7001    return BlockEdit;
7002  }(external_this_wp_element_["Component"]);
7003  
7004  /* harmony default export */ var block_edit = (block_edit_BlockEdit);
7005  
7006  
7007  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/gradients/index.js
7008  
7009  
7010  /**
7011   * External dependencies
7012   */
7013  
7014  /**
7015   * WordPress dependencies
7016   */
7017  
7018  
7019  
7020  /**
7021   * Internal dependencies
7022   */
7023  
7024  
7025  function __experimentalGetGradientClass(gradientSlug) {
7026    if (!gradientSlug) {
7027      return undefined;
7028    }
7029  
7030    return "has-".concat(gradientSlug, "-gradient-background");
7031  }
7032  
7033  function getGradientValueBySlug(gradients, slug) {
7034    var gradient = Object(external_this_lodash_["find"])(gradients, ['slug', slug]);
7035    return gradient && gradient.gradient;
7036  }
7037  
7038  function __experimentalGetGradientObjectByGradientValue(gradients, value) {
7039    var gradient = Object(external_this_lodash_["find"])(gradients, ['gradient', value]);
7040    return gradient;
7041  }
7042  
7043  function getGradientSlugByValue(gradients, value) {
7044    var gradient = __experimentalGetGradientObjectByGradientValue(gradients, value);
7045  
7046    return gradient && gradient.slug;
7047  }
7048  
7049  function __experimentalUseGradient() {
7050    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
7051        _ref$gradientAttribut = _ref.gradientAttribute,
7052        gradientAttribute = _ref$gradientAttribut === void 0 ? 'gradient' : _ref$gradientAttribut,
7053        _ref$customGradientAt = _ref.customGradientAttribute,
7054        customGradientAttribute = _ref$customGradientAt === void 0 ? 'customGradient' : _ref$customGradientAt;
7055  
7056    var _useBlockEditContext = useBlockEditContext(),
7057        clientId = _useBlockEditContext.clientId;
7058  
7059    var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) {
7060      var _select = select('core/block-editor'),
7061          getBlockAttributes = _select.getBlockAttributes,
7062          getSettings = _select.getSettings;
7063  
7064      var attributes = getBlockAttributes(clientId);
7065      return {
7066        gradient: attributes[gradientAttribute],
7067        customGradient: attributes[customGradientAttribute],
7068        gradients: getSettings().gradients
7069      };
7070    }, [clientId, gradientAttribute, customGradientAttribute]),
7071        gradients = _useSelect.gradients,
7072        gradient = _useSelect.gradient,
7073        customGradient = _useSelect.customGradient;
7074  
7075    var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/block-editor'),
7076        updateBlockAttributes = _useDispatch.updateBlockAttributes;
7077  
7078    var setGradient = Object(external_this_wp_element_["useCallback"])(function (newGradientValue) {
7079      var _updateBlockAttribute2;
7080  
7081      var slug = getGradientSlugByValue(gradients, newGradientValue);
7082  
7083      if (slug) {
7084        var _updateBlockAttribute;
7085  
7086        updateBlockAttributes(clientId, (_updateBlockAttribute = {}, Object(defineProperty["a" /* default */])(_updateBlockAttribute, gradientAttribute, slug), Object(defineProperty["a" /* default */])(_updateBlockAttribute, customGradientAttribute, undefined), _updateBlockAttribute));
7087        return;
7088      }
7089  
7090      updateBlockAttributes(clientId, (_updateBlockAttribute2 = {}, Object(defineProperty["a" /* default */])(_updateBlockAttribute2, gradientAttribute, undefined), Object(defineProperty["a" /* default */])(_updateBlockAttribute2, customGradientAttribute, newGradientValue), _updateBlockAttribute2));
7091    }, [gradients, clientId, updateBlockAttributes]);
7092  
7093    var gradientClass = __experimentalGetGradientClass(gradient);
7094  
7095    var gradientValue;
7096  
7097    if (gradient) {
7098      gradientValue = getGradientValueBySlug(gradients, gradient);
7099    } else {
7100      gradientValue = customGradient;
7101    }
7102  
7103    return {
7104      gradientClass: gradientClass,
7105      gradientValue: gradientValue,
7106      setGradient: setGradient
7107    };
7108  }
7109  
7110  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors-gradients/control.js
7111  
7112  
7113  
7114  
7115  
7116  function control_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
7117  
7118  function control_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { control_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { control_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7119  
7120  /**
7121   * External dependencies
7122   */
7123  
7124  
7125  /**
7126   * WordPress dependencies
7127   */
7128  
7129  
7130  
7131  
7132  
7133  /**
7134   * Internal dependencies
7135   */
7136  
7137  
7138   // translators: first %s: the color name or value (e.g. red or #ff0000)
7139  
7140  var colorIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(Color: %s)'); // translators: first %s: the gradient name or value (e.g. red to green or linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)
7141  
7142  
7143  var gradientIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(Gradient: %s)');
7144  
7145  var colorsAndGradientKeys = ['colors', 'disableCustomColors', 'gradients', 'disableCustomGradients'];
7146  
7147  function VisualLabel(_ref) {
7148    var colors = _ref.colors,
7149        gradients = _ref.gradients,
7150        label = _ref.label,
7151        currentTab = _ref.currentTab,
7152        colorValue = _ref.colorValue,
7153        gradientValue = _ref.gradientValue;
7154    var value, ariaLabel;
7155  
7156    if (currentTab === 'color') {
7157      if (colorValue) {
7158        value = colorValue;
7159        var colorObject = utils_getColorObjectByColorValue(colors, value);
7160        var colorName = colorObject && colorObject.name;
7161        ariaLabel = Object(external_this_wp_i18n_["sprintf"])(colorIndicatorAriaLabel, colorName || value);
7162      }
7163    } else if (currentTab === 'gradient' && gradientValue) {
7164      value = gradientValue;
7165  
7166      var gradientObject = __experimentalGetGradientObjectByGradientValue(gradients, value);
7167  
7168      var gradientName = gradientObject && gradientObject.name;
7169      ariaLabel = Object(external_this_wp_i18n_["sprintf"])(gradientIndicatorAriaLabel, gradientName || value);
7170    }
7171  
7172    return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, label, !!value && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorIndicator"], {
7173      colorValue: value,
7174      "aria-label": ariaLabel
7175    }));
7176  }
7177  
7178  function ColorGradientControlInner(_ref2) {
7179    var colors = _ref2.colors,
7180        gradients = _ref2.gradients,
7181        disableCustomColors = _ref2.disableCustomColors,
7182        disableCustomGradients = _ref2.disableCustomGradients,
7183        className = _ref2.className,
7184        label = _ref2.label,
7185        onColorChange = _ref2.onColorChange,
7186        onGradientChange = _ref2.onGradientChange,
7187        colorValue = _ref2.colorValue,
7188        gradientValue = _ref2.gradientValue;
7189    var canChooseAColor = onColorChange && (!Object(external_this_lodash_["isEmpty"])(colors) || !disableCustomColors);
7190    var canChooseAGradient = onGradientChange && (!Object(external_this_lodash_["isEmpty"])(gradients) || !disableCustomGradients);
7191  
7192    var _useState = Object(external_this_wp_element_["useState"])(gradientValue ? 'gradient' : !!canChooseAColor && 'color'),
7193        _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),
7194        currentTab = _useState2[0],
7195        setCurrentTab = _useState2[1];
7196  
7197    if (!canChooseAColor && !canChooseAGradient) {
7198      return null;
7199    }
7200  
7201    return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["BaseControl"], {
7202      className: classnames_default()('block-editor-color-gradient-control', className)
7203    }, Object(external_this_wp_element_["createElement"])("fieldset", null, Object(external_this_wp_element_["createElement"])("legend", null, Object(external_this_wp_element_["createElement"])("div", {
7204      className: "block-editor-color-gradient-control__color-indicator"
7205    }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["BaseControl"].VisualLabel, null, Object(external_this_wp_element_["createElement"])(VisualLabel, {
7206      currentTab: currentTab,
7207      label: label,
7208      colorValue: colorValue,
7209      gradientValue: gradientValue
7210    })))), canChooseAColor && canChooseAGradient && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ButtonGroup"], {
7211      className: "block-editor-color-gradient-control__button-tabs"
7212    }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
7213      isSmall: true,
7214      isPrimary: currentTab === 'color',
7215      isSecondary: currentTab !== 'color',
7216      onClick: function onClick() {
7217        return setCurrentTab('color');
7218      }
7219    }, Object(external_this_wp_i18n_["__"])('Solid')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
7220      isSmall: true,
7221      isPrimary: currentTab === 'gradient',
7222      isSecondary: currentTab !== 'gradient',
7223      onClick: function onClick() {
7224        return setCurrentTab('gradient');
7225      }
7226    }, Object(external_this_wp_i18n_["__"])('Gradient'))), (currentTab === 'color' || !canChooseAGradient) && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorPalette"], Object(esm_extends["a" /* default */])({
7227      value: colorValue,
7228      onChange: canChooseAGradient ? function (newColor) {
7229        onColorChange(newColor);
7230        onGradientChange();
7231      } : onColorChange
7232    }, {
7233      colors: colors,
7234      disableCustomColors: disableCustomColors
7235    })), (currentTab === 'gradient' || !canChooseAColor) && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["__experimentalGradientPicker"], Object(esm_extends["a" /* default */])({
7236      value: gradientValue,
7237      onChange: canChooseAColor ? function (newGradient) {
7238        onGradientChange(newGradient);
7239        onColorChange();
7240      } : onGradientChange
7241    }, {
7242      gradients: gradients,
7243      disableCustomGradients: disableCustomGradients
7244    }))));
7245  }
7246  
7247  function ColorGradientControlSelect(props) {
7248    var colorGradientSettings = Object(external_this_wp_data_["useSelect"])(function (select) {
7249      var settings = select('core/block-editor').getSettings();
7250      return Object(external_this_lodash_["pick"])(settings, colorsAndGradientKeys);
7251    });
7252    return Object(external_this_wp_element_["createElement"])(ColorGradientControlInner, control_objectSpread({}, colorGradientSettings, {}, props));
7253  }
7254  
7255  function ColorGradientControl(props) {
7256    if (Object(external_this_lodash_["every"])(colorsAndGradientKeys, function (key) {
7257      return props.hasOwnProperty(key);
7258    })) {
7259      return Object(external_this_wp_element_["createElement"])(ColorGradientControlInner, props);
7260    }
7261  
7262    return Object(external_this_wp_element_["createElement"])(ColorGradientControlSelect, props);
7263  }
7264  
7265  /* harmony default export */ var control = (ColorGradientControl);
7266  
7267  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors-gradients/panel-color-gradient-settings.js
7268  
7269  
7270  
7271  
7272  
7273  function panel_color_gradient_settings_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
7274  
7275  function panel_color_gradient_settings_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { panel_color_gradient_settings_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { panel_color_gradient_settings_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7276  
7277  /**
7278   * External dependencies
7279   */
7280  
7281  
7282  /**
7283   * WordPress dependencies
7284   */
7285  
7286  
7287  
7288  
7289  /**
7290   * Internal dependencies
7291   */
7292  
7293  
7294  
7295   // translators: first %s: The type of color or gradient (e.g. background, overlay...), second %s: the color name or value (e.g. red or #ff0000)
7296  
7297  var panel_color_gradient_settings_colorIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(%s: color %s)'); // translators: first %s: The type of color or gradient (e.g. background, overlay...), second %s: the color name or value (e.g. red or #ff0000)
7298  
7299  
7300  var panel_color_gradient_settings_gradientIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(%s: gradient %s)');
7301  
7302  var panel_color_gradient_settings_colorsAndGradientKeys = ['colors', 'disableCustomColors', 'gradients', 'disableCustomGradients'];
7303  
7304  var panel_color_gradient_settings_Indicators = function Indicators(_ref) {
7305    var colors = _ref.colors,
7306        gradients = _ref.gradients,
7307        settings = _ref.settings;
7308    return settings.map(function (_ref2, index) {
7309      var colorValue = _ref2.colorValue,
7310          gradientValue = _ref2.gradientValue,
7311          label = _ref2.label,
7312          availableColors = _ref2.colors,
7313          availableGradients = _ref2.gradients;
7314  
7315      if (!colorValue && !gradientValue) {
7316        return null;
7317      }
7318  
7319      var ariaLabel;
7320  
7321      if (colorValue) {
7322        var colorObject = utils_getColorObjectByColorValue(availableColors || colors, colorValue);
7323        ariaLabel = Object(external_this_wp_i18n_["sprintf"])(panel_color_gradient_settings_colorIndicatorAriaLabel, label.toLowerCase(), colorObject && colorObject.name || colorValue);
7324      } else {
7325        var gradientObject = __experimentalGetGradientObjectByGradientValue(availableGradients || gradients, colorValue);
7326  
7327        ariaLabel = Object(external_this_wp_i18n_["sprintf"])(panel_color_gradient_settings_gradientIndicatorAriaLabel, label.toLowerCase(), gradientObject && gradientObject.name || gradientValue);
7328      }
7329  
7330      return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorIndicator"], {
7331        key: index,
7332        colorValue: colorValue || gradientValue,
7333        "aria-label": ariaLabel
7334      });
7335    });
7336  };
7337  
7338  var panel_color_gradient_settings_PanelColorGradientSettingsInner = function PanelColorGradientSettingsInner(_ref3) {
7339    var className = _ref3.className,
7340        colors = _ref3.colors,
7341        gradients = _ref3.gradients,
7342        disableCustomColors = _ref3.disableCustomColors,
7343        disableCustomGradients = _ref3.disableCustomGradients,
7344        children = _ref3.children,
7345        settings = _ref3.settings,
7346        title = _ref3.title,
7347        props = Object(objectWithoutProperties["a" /* default */])(_ref3, ["className", "colors", "gradients", "disableCustomColors", "disableCustomGradients", "children", "settings", "title"]);
7348  
7349    if (Object(external_this_lodash_["isEmpty"])(colors) && Object(external_this_lodash_["isEmpty"])(gradients) && disableCustomColors && disableCustomGradients && Object(external_this_lodash_["every"])(settings, function (setting) {
7350      return Object(external_this_lodash_["isEmpty"])(setting.colors) && Object(external_this_lodash_["isEmpty"])(setting.gradients) && (setting.disableCustomColors === undefined || setting.disableCustomColors) && (setting.disableCustomGradients === undefined || setting.disableCustomGradients);
7351    })) {
7352      return null;
7353    }
7354  
7355    var titleElement = Object(external_this_wp_element_["createElement"])("span", {
7356      className: "block-editor-panel-color-gradient-settings__panel-title"
7357    }, title,