\n
\n
\n
\n
支払調書の郵送依頼
\n
\n 「郵送依頼をする」ボタンを押すことで、支払調書の郵送をクライアント様に依頼出来ます。\n
\n
\n 支払調書を郵送してもらえるよう、クライアント様に依頼を送りますか?\n
\n\n
\n
\n - \n 依頼先クライアント名:\n {props.client_name}\n
\n
\n\n
\n\n\n
\n 依頼に際し、クライアント様にメッセージがある場合は以下にご記入下さい\n
\n
\n \n
\n\n
\n\n \n\n\n\n\n
\n
\n \n
\n \n \n\n\n","\n\n
\n\n\t\n\n\n\t\n\t\t
\n\t\t\t- 受注履歴・請求関連
\n\t\t\t- 支払調書
\n\t\t\t- 詳細
\n\t\t
\n\t
\n\n\t\n\t\t
\n\n\t\t\t\n\t\t\t\t{state.summary_detail.description.target_year}年に\n\t\t\t\t「{state.summary_detail.description.client_name}」様から受注したプロジェクトの集計情報を表示しています\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\n\n\t
\n\n\n\t\n\n","
\n\n \n\n \n
\n 受注プロジェクトの合算情報\n
\n \n \n \n \n 対象年 | \n クライアントID | \n クライアント名 | \n 会社種類 | \n プロジェクト件数 | \n 受注金額合計(税抜) | \n 消費税額合計 | \n 源泉額合計 | \n 受取額合計(税込) | \n\n 受取済の 報酬総額 | \n CROCO預り中の 報酬残額 | \n
\n\n \n {props.description.target_year}年 | \n {props.description.client_id} | \n {props.description.client_name} | \n \n 個人\n 法人\n | \n 件 | \n 円 | \n 円 | \n \n \n ---\n \n \n 円\n \n | \n 円 | \n\n 円 | \n 円 | \n
\n\n \n
\n\n \n","
\n\n \n\n\n \n
\n 受注プロジェクト一覧\n
\n \n \n \n \n プロジェクトID | \n プロジェクトタイトル | \n 受注確定年月日 | \n 受注金額 (税抜) | \n 消費税額 | \n 源泉額 | \n 受取額(税込) | \n 募集件数 | \n 納品数 (うち報酬未払 のもの) | \n\n 未納品数 | \n 受取済 報酬総額 | \n CROCO預り中の 報酬残額 | \n
\n\n\n \n {item.project_id} | \n {item.project_title} | \n {date_format(item.paid_at_project)} | \n 円 | \n 円 | \n \n\n \n ---\n \n \n 円\n \n | \n 円 | \n 件 | \n \n \n ()\n | \n\n | \n 円 | \n 円 | \n
\n \n
\n\n \n","\n\n
\n \n\n \n\n \n\n
お客様名:{invoice.client_name}様
\n\n
\n \n
\n
\n
pdf(e,invoice.project_id) }\">この請求書のPDF\n
\n
\n\n
\n\n
\n\n \n\n
収納代⾏(編集者・ライターへの報酬金)による請求額
\n\n
\n
\n 対象プロジェクト\n \n \n プロジェクトID | \n 受託者 | \n プロジェクト発注金額(税抜) | \n
\n \n \n \n {invoice.project_id} | \n {invoice.worker_real_name} | \n \n \n 円\n | \n
\n \n
\n
\n\n\n
\n
\n \n \n 税率\n \n 対象額 小計(税抜)\n | \n \n \n 円\n | \n
\n\n \n 源泉徴収税額 | \n ▲\n \n 円\n | \n
\n\n \n 消費税額(税率\n \n )\n | \n \n \n | \n
\n\n \n \n 差引請求額(税込)\n 請求額(税込)\n | \n \n \n 円\n | \n
\n\n \n
\n
\n\n\n \n\n \n \n\n \n
※編集者・ライター様への報酬の支払いは納品単位で行います。
複数の制作物が含まれるプロジェクトの場合はそれぞれの制作物に設定された上記の請求額が都度、納品されるごとに編集者・ライター様に支払われます。\n
\n\n\n
\n \n - \n CROCO株式会社\n
\n - \n 適格請求書発行事業者登録番号:\n T9011001104342\n
\n
\n\n\n \n\n
\n\n\n \n\n \n\n","\n\n
\n \n
\n\n
\n\n
\n\n \n\n
\n 本人確認書類が未提出です(お仕事の受託やクライアント様との交渉ができません)
\n\n
会員情報
\n\n
\n
※メールアドレス(ログインID)やパスワードは「CROCO\n ID」のページで変更が可能です。
\n\n
登録基本情報
\n\n
\n ※個人情報のお取り扱いについて\n
\n\n
\n 登録基本情報が登録されていません。以下のボタンから登録を行ってください。\n
\n
\n 現在、登録基本情報の更新を申請中です\n
\n\n
\n\n
= 2 }\n class=\"button button-secondary\" type=\"button\" value=\"\"\n style=\"margin-left:1rem;margin-right:1rem;\"\n onclick={(e) => basicInfo()}>現在の内容を確認する\n
\n\n
basicInfoApplication()}>本人認証を行う\n
\n\n
basicInfoApplication()}>変更を申請する\n
\n\n
basicInfoApplicationConfirm()}>申請内容を確認する\n
\n\n
\n\n
銀行口座情報
\n\n
\n 銀行口座情報が登録されていません。以下のボタンから登録を行ってください。\n
\n
\n 現在内容を運営事務局で確認中のため、更新はできません\n
\n
\n 銀行口座情報に確認が必要な状態です。以下のボタンから更新画面へ移動し、内容を確認・修正してください。\n
\n\n
\n
bankInfo()}>\n {(state.bank_account.status === 0) ? \"銀行口座情報を登録する\" : \"口座情報を変更する\"\n }\n
\n
location.href= \"/info/bank-account-confirm\" }>\n 内容を確認する\n
\n
\n\n
\n\n \n\n
\n
\n\n \n\n","/** @format */\n\nimport EdilentWorkerApi from '@model/api';\nimport Validator from '@croco/validator';\nimport di from \"dependeny-injection\";\n\n/**\n *\n * @package edilent-worker\n */\nclass BankAccountWithApi extends EdilentWorkerApi {\n /**\n * コンストラクタ\n *\n * @access public\n * @return void\n */\n constructor() {\n super('info');\n this._clear();\n this._registerEvent();\n }\n\n /**\n * バリデーションの取得\n *\n * @access public\n * @return void\n */\n getValidation(name) {\n let validation = new Map([\n ['bank_name', {required: true, validate: false}],\n ['branch_name', {required: true, validate: false}],\n ['bank_code', {required: true, validate: false}],\n ['branch_code', {required: true, validate: false}],\n ['account_type', {required: true, validate: false}],\n ['account_number', {required: true, validate: 'int'}],\n ['account_name', {required: true, validate: 'multibyte'}]\n ]);\n\n if (validation.has(name)) {\n return validation.get(name);\n }\n\n return {required: false, validate: false};\n }\n\n /**\n * 変数の初期化\n *\n * @access private\n * @return void\n */\n _clear() {\n this.item = new Validator({\n bank_name: '',\n branch_name: '',\n bank_code: '',\n branch_code: '',\n account_type: '',\n account_number: '',\n account_name: '',\n });\n this.fieldsAlert = true;\n this.bank_account_status = null\n }\n\n /**\n * イベントの登録\n *\n * @access private\n * @return void\n */\n _registerEvent() {\n this.on('fetch', () => {\n this._fetch();\n });\n this.on('save', () => {\n this._save();\n });\n }\n\n hasFields() {\n let keys = this.item._keys;\n let array = [];\n for (let idx in keys) {\n if (this.item[keys[idx]]) {\n array.push(this.item[keys[idx]]);\n }\n }\n this.fieldsAlert = (0 === array.length);\n return this.fieldsAlert;\n }\n\n /**\n * 指定した制作実績の取得\n *\n * @access private\n * @return void\n */\n async _fetch() {\n this._clear();\n\n let item = await this.request('bankAccount', 'fetch');\n for (const key in item) {\n if (item.hasOwnProperty(key) && item[key]) {\n this.item.set(key, item[key], {required: true, validate: false});\n }\n }\n if (item && item.hasOwnProperty(\"status\")) {\n this.bank_account_status = item.status;\n }\n this.hasFields();\n this.trigger('update');\n }\n\n /**\n * 銀行口座情報の更新\n *\n * @access private\n * @return void\n */\n async _save() {\n this.enable = this.item.validate();\n if (!this.enable) {\n this.trigger('update');\n return;\n }\n if (this.hasFields()) {\n this.trigger('update');\n return;\n }\n let data = new FormData();\n data.set('bank_code', this.item.bank_code);\n data.set('branch_code', this.item.branch_code);\n data.set('account_type', this.item.account_type);\n data.set('account_number', this.item.account_number);\n data.set('account_name', this.item.account_name);\n\n try {\n await this.request('bankAccount', 'save', data);\n di.toast.push(`銀行口座情報を変更しました。`, \"success\");\n di.router.push(\"/info/bank-account-confirm\");\n } catch (e) {\n di.toast.push(e, \"negative\");\n }\n }\n}\n\nconst bankAccountApi = new BankAccountWithApi();\n\nexport default bankAccountApi;\n","
\n \n\n \n\n
\n\n
\n\n
\n\n
\n 銀行・支店検索\n
\n\n
\n\n
\n\n
\n
\n\n\n
\n\n \n\n\n","\n
\n \n \n","\n\n
\n\n \n\n
\n
\n - 会員情報
\n 銀行口座の登録・変更の申請
\n
\n\n
\n\n
\n
\n \n\n
\n 銀行口座の登録・変更\n
\n\n
\n 下記の銀行口座情報を入力いただき、「口座情報の登録・変更する」ボタンをクリックしてください。
\n\n
\n 銀行口座情報\n \n
\n
\n\n
\n
\n ※口座名義人と登録名が一致していないとお振り込みができません。屋号につきましては「屋号+個人名」であればご登録可能です。
\n
※銀行口座の場合は普通口座のみの取り扱いとなります。
\n
\n ※報酬額が残高の金額に関係なく、報酬額が確定した翌月に入金され繰り越しはされません。
\n
\n
\n \n
\n
\n\n\n \n\n","\n
\n\n \n \n \n 銀行・支店情報\n | \n \n\n \n 銀行情報のご入力につきましては、以下のボタンをクリックすると表示されるメニューをご利用ください\n \n\n \n \n openSearchModal(e)}\">\n 銀行・支店検索\n \n \n\n \n\n \n \n | \n
\n \n 預金種別 | \n \n \n ※当座、貯蓄口座でのご利用はできません。 \n | \n
\n \n 口座番号 | \n \n \n \n \n ※7桁より少ない場合は、左側を0で埋めてください。 \n | \n
\n \n 口座名義 (カタカナ) | \n \n \n \n \n ※「カタカナ」でご入力ください。 \n | \n
\n
\n\n \n\n \n\n \n","\n\n
\n\n \n\n
\n\n
\n
\n \n\n
\n 銀行口座の登録・変更\n
\n\n
\n
\n 現在以下の内容を運営事務局で確認中です。しばらくお待ちください。\n
\n
\n 銀行口座情報に確認が必要な状態です。こちらのページから内容のご確認と修正を行ってください。\n
\n
\n\n
\n 銀行口座情報\n
\n\n
\n\n
\n \n
\n
\n\n\n \n\n","\n
\n\n \n \n \n 銀行・支店情報\n | \n \n\n \n\n \n \n \n {bankAccount.item.bank_name}\n \n\n \n \n \n \n \n \n \n {bankAccount.item.branch_name}\n \n \n \n \n | \n
\n \n 預金種別 | \n \n \n | \n
\n \n 口座番号 | \n \n \n {bankAccount.item.branch_name}\n \n | \n
\n \n 口座名義 (カタカナ) | \n \n \n {bankAccount.item.account_name}\n \n | \n
\n
\n\n \n","\n\n
\n\n \n\n
\n\n
\n
\n \n
\n 現在の登録基本情報\n
\n\n
登録基本情報
\n\n
\n \n 本名 | \n \n \n \n \n {state.basic_information.family_name}\n \n \n \n {state.basic_information.last_name}\n \n\n \n | \n
\n \n フリガナ | \n \n \n \n \n {state.basic_information.family_kana}\n \n \n \n {state.basic_information.last_kana}\n \n \n | \n
\n \n 生年月日 | \n \n \n \n {state.basic_information.birthday}\n \n \n | \n
\n \n 性別 | \n \n \n \n\n 男性\n 女性\n その他\n 無回答\n\n \n \n | \n
\n \n 住所 | \n \n \n | \n
\n \n 身分証明書 | \n \n \n \n 未提出\n 確認中\n 提出済み\n \n \n | \n
\n \n マイナンバー | \n \n \n \n 未提出\n 確認中\n 提出済み\n \n \n | \n
\n\n \n 適格請求書発行事業者 | \n \n\n \n \n \n \n \n (発行事業者番号:{state.eligible_invoice_provider.provider_number})\n \n \n\n | \n
\n\n
\n\n
\n \n
\n\n
\n \n","/** @format */\n\nimport EdilentWorkerApi from '@model/api';\nimport Validator from '@croco/validator';\nimport di from \"dependeny-injection\";\n\n/**\n *\n * @package edilent-worker\n */\nclass BasicInformationApi extends EdilentWorkerApi {\n /**\n * コンストラクタ\n *\n * @access public\n * @return void\n */\n constructor() {\n super('info');\n this.isRegistered = false;\n this._clear();\n this._registerEvent();\n }\n\n /**\n * バリデーションの取得\n *\n * @access public\n * @return void\n */\n getValidation(name) {\n let validation = new Map([\n ['family_name', {required: true, validate: false}],\n ['last_name', {required: true, validate: false}],\n ['family_kana', {required: true, validate: false, mbstring: true}],\n ['last_kana', {required: true, validate: false, mbstring: true}],\n ['birthday', {required: true, validate: true}],\n ['zip', {required: true, validate: true, numeric: true}],\n ['address1', {required: true, validate: true}],\n ['mynumber', {required: true, validate: true, numeric: true}],\n ['invoice_provider_number_body', {required: false, validate: false}],\n ]);\n if (validation.has(name)) {\n return validation.get(name);\n }\n\n return {required: false, validate: false};\n }\n\n /**\n * 変数の初期化\n *\n * @access private\n * @return void\n */\n _clear() {\n this.item = new Validator({\n family_name: '',\n last_name: '',\n family_kana: '',\n last_kana: '',\n birthday: '2000-01-01',\n zip: '',\n sex: '1',\n address1: '',\n address2: '',\n mynumber: '',\n identity_type: \"driver-lisence\",\n invoice_provider_number_body: '',\n invoice_provider_state: 'no',\n });\n this.invoice_provider_number_prefix = 'T'\n this.file1 = ''\n this.file2 = ''\n this.file3 = ''\n this.file4 = ''\n this.fieldsAlert = true;\n\n\n }\n\n /**\n * イベントの登録\n *\n * @access private\n * @return void\n */\n _registerEvent() {\n this.on('fetch', () => {\n this._fetch();\n });\n this.on('save', () => {\n this._save();\n });\n }\n\n hasFields() {\n let keys = this.item._keys;\n let array = [];\n for (let idx in keys) {\n if (this.item[keys[idx]]) {\n array.push(this.item[keys[idx]]);\n }\n }\n this.fieldsAlert = (0 === array.length);\n return this.fieldsAlert;\n }\n\n /**\n * 指定した制作実績の取得\n *\n * @access private\n * @return void\n */\n async _fetch() {\n this._clear();\n\n let item = await this.request('basicInformation', 'fetch');\n this.isRegistered = !!item.family_name;\n let exists_invoice_provider_number_body = false;\n for (const key in item) {\n\n const value = ((key === \"invoice_provider_state\") && (item[key] === \"unknown\")) ? \"no\" : item[key];\n\n if (key === 'address2') {\n this.item.set(key, item[key], {validate: false});\n } else if (key === \"invoice_provider_number_body\") {\n //number_bodyはstateがyes以外の場合は採用しない。number_bodyがあるのはyes(発行事業者)だけのため\n const number_body = (item[\"invoice_provider_state\"] !== \"yes\") ? \"\" : value;\n this.item.set(key, number_body, {required: false, validate: false});\n exists_invoice_provider_number_body = true;\n } else if ((key === \"invoice_provider_number_prefix\") || (key === \"invoice_provider_number\")) {\n //これらの項目は送られてきてもスルーする。riotコンポーネント側で常に自動生成する項目のため\n } else {\n this.item.set(key, value, {required: true, validate: true});\n }\n\n }\n this.hasFields();\n this.trigger('update');\n }\n\n /**\n * 基本情報の登録/更新\n *\n * @access private\n * @return void\n */\n async _save() {\n\n this.enable = this.item.validate();\n if (!this.enable) {\n this.trigger('update');\n return;\n }\n\n if (this.hasFields()) {\n this.trigger('update');\n return;\n }\n let data = new FormData();\n for (const key in this.item) {\n if (this.item.hasOwnProperty(key) && this.item[key]) {\n data.set(key, this.item[key])\n } else {\n data.set(key, \"\")\n }\n }\n\n if (!this.item.hasOwnProperty(\"invoice_provider_number_body\")) {\n data.set(\"invoice_provider_number_body\", \"\");\n }\n\n data.set('file1', this.file1);\n data.set('file2', this.file2);\n data.set('file3', this.file3);\n data.set('file4', this.file4);\n\n //data.set('invoice_provider_number', this.invoice_provider_number);\n //data.set('invoice_provider_state', this.invoice_provider_state);\n data.set('invoice_provider_number_prefix', this.invoice_provider_number_prefix);\n\n try {\n await this.request('basicInformation', 'save', data);\n di.toast.push(`登録・変更申請をしました`, \"success\");\n if (!this.isRegistered) {\n this.isRegistered = true;\n window.analytics.event(\"unlock_achievement\", {\n achievement_id: \"basic_info_first_application\",\n });\n }\n di.router.push(\"/info/basic-information-application-confirm\");\n } catch (e) {\n di.toast.push(e, 'negative');\n }\n }\n}\n\nconst basicInformationApi = new BasicInformationApi();\n\nexport default basicInformationApi;\n","\n
\n \n \n","\n
\n \n \n \n \n \n
アップロードされているファイルはありません。
\n
\n\n \n \n","
\n\n 適格請求書発行事業者
\n \n \n 適格請求書発行事業者ですか? | \n \n \n \n \n | \n
\n \n 登録番号 | \n \n \n \n\n \n \n \n T\n \n \n \n \n {state.error_message}\n \n\n \n \n | \n
\n
\n\n \n\n\n","\n\n
\n\n \n\n
\n\n
\n
\n\n \n
\n 登録基本情報の更新申請\n
\n\n
\n 登録基本情報を入力いただき、本人確認書類として身分証明書の提出と、マイナンバーの登録をお願いいたします。\n
尚、住所等に変更があった際は、本画面より再提出を行っていただく必要があります。\n
※入力完了後、申請内容を事務局にて確認いたします。問題がなければ登録完了となります。
\n
登録基本情報
\n
\n
\n\n \n
\n\n
\n \n","\n
\n\n \n \n 本名 | \n \n \n | \n
\n \n フリガナ | \n \n \n | \n
\n \n 生年月日 | \n \n \n | \n
\n \n 性別 | \n \n \n \n \n | \n
\n \n 住所 | \n \n \n | \n
\n
\n\n \n\n \n\n \n\n \n","\n\n
\n\n 身分証明書
\n\n ご本人確認の為の書類として身分証明書の提出が必要です。
下記の表の「本人確認書類」のいずれか1種類を提出する書類として選択いただき、「提出するページ」の画像をアップロードしてください。
\n ※下記の表に記されているもの以外の書類を利用されたい場合は、こちらより事務局にお問い合わせください。
\n ※全体が写っていない、あるいは文字が読み取れないなど、不備がある場合は、再申請をお願いすることとなりますのでご注意ください。
\n\n \n \n 本人確認書類 | \n 提出するページ | \n 注意事項 | \n
\n \n パスポート | \n \n ①顔写真入りページ ②住所記入欄ページ\n | \n 2020年2月4日以降に発給申請されたパスポートは、現住所の記載がないため身分証明書としてご利用いただけません。2020年2月3日以前に発給申請された、日本国発行の有効期限内のパスポートをご利用ください。\n | \n
\n \n 運転免許証 | \n \n ①おもて面 ②うら面\n | \n 有効期限内の運転免許証をご利用ください。 | \n
\n \n マイナンバーカード | \n \n ①おもて面 ②うら面\n | \n 個人番号通知書および通知カードは身分証明書としてご利用いただけません。 | \n
\n \n 特別永住者証明書 | \n \n ①おもて面 ②うら面\n | \n 有効期限内の特別永住者証明書をご利用ください。 | \n
\n \n 障がい者手帳(カード含む) | \n \n ①おもて面 ②うら面 ※手帳の場合は表紙と個人情報部分\n | \n 顔写真付きの有効期限内のもので、マイナンバーの照合書類と住所が一致している物。 ※手帳型で住所変更等の記載がある場合は、顔写真部分と変更情報記載部分をアップロードしてください。 | \n
\n\n
\n\n 本人確認書類
\n \n \n 提出する書類 | \n \n \t\n | \n
\n
\n\n {state.types[basicInformation.item.identity_type]}:提出するページ①
\n\t\t\t\t\t\n \n \n \n {state.types[basicInformation.item.identity_type]}:提出するページ②
\n \n \n \n\n マイナンバー\n \n
\n\n ご入力いただいた内容は、源泉処理で利用いたします。
\n マイナンバー確認画像欄には入力内容を照合するためのマイナンバーカード、または個人番号通知書のナンバー記載部分と氏名、住所等の記載部分の画像をアップロードしてください。
\n \n\n\n マイナンバー確認画像:表
\n\n \n \n\n マイナンバー確認画像:裏
\n\n \n \n\n\n\n","\n\n
\n\n \n\n
\n
\n - 会員情報
\n 登録基本情報の更新申請|申請内容の確認
\n
\n
\n\n
\n
\n\n \n
\n 登録基本情報の更新申請|申請内容の確認\n
\n\n
\n
\n\n \n
\n\n
\n \n","\n
\n\n\n \n
現在、登録基本情報の更新申請はありません
\n
\n\n \n\n
\n 以下の内容で現在登録基本情報の更新を申請中です。
申請内容の確認を行っておりますので、今しばらくお待ちください。\n
\n\n
登録基本情報
\n\n
\n \n 本名 | \n \n \n \n \n {state.application.family_name}\n\n \n \n \n {state.application.last_name}\n \n \n | \n
\n \n フリガナ | \n \n \n \n \n {state.application.family_kana}\n \n \n \n {state.application.last_kana}\n \n \n | \n
\n \n 生年月日 | \n \n \n \n {state.application.birthday}\n \n \n | \n
\n \n 性別 | \n \n \n \n\n 男性\n 女性\n その他\n 無回答\n\n \n \n | \n
\n \n 住所 | \n \n \n | \n
\n
\n\n
\n
本人確認書類
\n\n
\n
\n
\n\n 運転免許証\n パスポート\n マイナンバーカード\n 特別永住者証明書\n\n
\n
\n\n
\n \n \n アップロード済み\n
\n\n
\n \n \n アップロード済み\n
\n\n
\n\n
\n
マイナンバー
\n\n
\n
\n
\n {state.application.mynumber}\n
\n
\n\n
\n \n \n アップロード済み\n
\n\n
\n \n \n アップロード済み\n
\n\n
\n\n
\n
適格請求書発行事業者
\n \n
\n \n \n \n \n (発行事業者番号:{state.application.invoice_provider_number_prefix}{state.application.invoice_provider_number_body})\n \n
\n\n
\n\n\n \n\n \n","/** @format */\n\nimport EdilentWorkerApi from '@model/api';\nimport Validator from '@croco/validator';\nimport di from \"dependeny-injection\";\n\n/**\n *\n * @package edilent-worker\n */\nclass InvoiceProviderApi extends EdilentWorkerApi {\n /**\n * コンストラクタ\n *\n * @access public\n * @return void\n */\n constructor() {\n super('info');\n this.isRegistered = false;\n this._clear();\n this._registerEvent();\n }\n\n /**\n * バリデーションの取得\n *\n * @access public\n * @return void\n */\n getValidation(name) {\n let validation = new Map([\n ['invoice_provider_number_body', {required: false, validate: false}],\n ]);\n if (validation.has(name)) {\n return validation.get(name);\n }\n\n return {required: false, validate: false};\n }\n\n /**\n * 変数の初期化\n *\n * @access private\n * @return void\n */\n _clear() {\n this.item = new Validator({\n invoice_provider_number_body: '',\n invoice_provider_state: 'no',\n });\n this.invoice_provider_number_prefix = 'T'\n }\n\n /**\n * イベントの登録\n *\n * @access private\n * @return void\n */\n _registerEvent() {\n this.on('fetch', () => {\n this._fetch();\n });\n this.on('save', () => {\n this._save();\n });\n }\n\n hasFields() {\n let keys = this.item._keys;\n let array = [];\n for (let idx in keys) {\n if (this.item[keys[idx]]) {\n\n array.push(this.item[keys[idx]]);\n }\n }\n if (0 === array.length) {\n this.fieldsAlert = true;\n } else {\n this.fieldsAlert = false;\n }\n return this.fieldsAlert;\n }\n\n /**\n * 指定した制作実績の取得\n *\n * @access private\n * @return void\n */\n async _fetch() {\n this._clear();\n\n let item = await this.request('basicInformation', 'fetch');\n this.isRegistered = !!item.family_name;\n for (const key in item) {\n /**\n * invoice_provider_number_body: '',\n * invoice_provider_state: 'unknown',\n */\n const value = ((key === \"invoice_provider_state\") && (item[key] === \"unknown\")) ? \"no\" : item[key];\n\n if (key === \"invoice_provider_number_body\") {\n //number_bodyはstateがyes以外の場合は採用しない。number_bodyがあるのはyes(発行事業者)だけのため\n const number_body = (item[\"invoice_provider_state\"] !== \"yes\") ? \"\" : value;\n this.item.set(key, number_body, {required: false, validate: false});\n } else {\n this.item.set(key, value, {required: false, validate: false});\n }\n }\n this.hasFields();\n this.trigger('update');\n }\n\n /**\n * 基本情報の登録/更新\n *\n * @access private\n * @return void\n */\n async _save() {\n this.enable = this.item.validate();\n if (!this.enable) {\n this.trigger('update');\n return;\n }\n if (this.hasFields()) {\n this.trigger('update');\n return;\n }\n let data = new FormData();\n for (const key in this.item) {\n if (this.item.hasOwnProperty(key) && this.item[key]) {\n data.set(key, this.item[key])\n }\n }\n\n data.set('invoice_provider_number_prefix', this.invoice_provider_number_prefix);\n data.set('application_type', \"invoice_provider_only\");\n\n try {\n await this.request('invoiceProvider', 'save', data);\n di.toast.push(`登録・変更申請をしました`, \"success\");\n if (!this.isRegistered) {\n this.isRegistered = true;\n window.analytics.event(\"unlock_achievement\", {\n achievement_id: \"basic_info_first_application\",\n });\n }\n } catch (e) {\n di.toast.push(e, 'negative');\n }\n }\n}\n\nconst invoiceProviderApi = new InvoiceProviderApi();\n\nexport default invoiceProviderApi;\n","\n
\n \n \n","/** @format */\n\nimport {toRegexp, toPath} from \"@riotjs/route\";\n\n//menu以下\nimport menuIndex from \"@tags/pages/menu/index.riot\";\nimport information from \"@tags/pages/menu/information.riot\";\nimport informationDetail from \"@tags/pages/menu/information-detail.riot\";\nimport help from \"@tags/pages/menu/help.riot\";\nimport rules from \"@tags/pages/menu/rules.riot\";\nimport inquiry from \"@tags/pages/menu/inquiry.riot\";\nimport publicInfo from \"@tags/pages/menu/public-info.riot\";\nimport preview from \"@tags/pages/menu/public-info/preview.riot\";\nimport resign from \"@tags/pages/menu/resign.riot\";\nimport resignConfirm from \"@tags/pages/menu/resign-confirm.riot\";\nimport resignComplete from \"@tags/pages/menu/resign-complete.riot\";\nimport importComplete from \"@tags/pages/menu/import-complete.riot\";\nimport myNumberBrowsingApplication from \"@tags/pages/menu/mynumber-browsing-application.riot\";\nimport manual from \"@tags/pages/menu/manual.riot\";\nimport history from \"@tags/pages/menu/history.riot\";\n\nconst menus = [{\n path: \"/menu\",\n is: \"index-tag\",\n component: menuIndex,\n},\n {\n path: \"/menu/information\",\n is: \"information-tag\",\n component: information,\n },\n {\n path: \"/menu/information/:info_id\",\n is: \"information-detail-tag\",\n component: informationDetail,\n },\n {\n path: \"/menu/help\",\n is: \"help-tag\",\n component: help,\n },\n {\n path: \"/menu/help/:big_category\",\n is: \"help-tag\",\n component: help,\n },\n {\n path: \"/menu/help/:big_category/:small_category\",\n is: \"help-tag\",\n component: help,\n },\n {\n path: \"/menu/rules\",\n is: \"rules-tag\",\n component: rules,\n },\n\n {\n path: \"/menu/inquiry\",\n is: \"inquiry-tag\",\n component: inquiry,\n },\n {\n path: \"/menu/public-info\",\n is: \"public-info-tag\",\n component: publicInfo,\n },\n {\n path: \"/menu/public-info/preview\",\n is: \"preview-tag\",\n component: preview,\n },\n\n {\n path: \"/menu/resign\",\n is: \"resign-tag\",\n component: resign,\n },\n {\n path: \"/menu/resign/confirm\",\n is: \"resign-confirm-tag\",\n component: resignConfirm,\n },\n {\n path: \"/menu/resign/complete\",\n is: \"resign-complete-tag\",\n component: resignComplete,\n },\n {\n path: \"/menu/import/complete\",\n is: \"import-complete-tag\",\n component: importComplete,\n },\n {\n path: \"/menu/mynumber-browsing-application\",\n is: \"mynumber-browsing-application-tag\",\n component: myNumberBrowsingApplication,\n },\n {\n path: \"/menu/manual\",\n is: \"manual-tag\",\n component: manual,\n },\n {\n path: \"/menu/history\",\n is: \"history-tag\",\n component: history,\n },\n];\n\n//ad以下\nimport adIndex from \"@tags/pages/ad/index.riot\";\nimport adEntried from \"@tags/pages/ad/entried.riot\";\nimport adInterest from \"@tags/pages/ad/interest.riot\";\nimport adSearch from \"@tags/pages/ad/search.riot\";\nimport adDetail from \"@tags/pages/ad/detail.riot\";\nimport adEntry from \"@tags/pages/ad/entry.riot\";\n\nconst ads = [{\n path: \"/ad\",\n is: \"ad-index-tag\",\n component: adIndex,\n},\n {\n path: \"/ad/entried\",\n is: \"ad-entried-tag\",\n component: adEntried,\n },\n {\n path: \"/ad/(interest|interested)\",\n is: \"ad-interest-tag\",\n component: adInterest,\n },\n {\n path: \"/ad/search\",\n is: \"ad-search-tag\",\n component: adSearch,\n },\n {\n path: \"/ad/detail/:ad_id\",\n is: \"ad-detail-tag\",\n component: adDetail,\n },\n {\n path: \"/ad/detail/:ad_id/entry\",\n is: \"ad-entry-tag\",\n component: adEntry,\n }\n];\n\n//chat以下\nimport chatIndex from \"@tags/pages/chat/index.riot\";\nimport chatList from \"@tags/pages/chat/list.riot\";\nimport chatRoom from \"@tags/pages/chat/room.riot\";\n\nconst chats = [{\n path: \"/chat\",\n is: \"chat-index-tag\",\n component: chatIndex,\n},\n {\n path: \"/chat/index/:client_id\",\n is: \"chat-list-tag\",\n component: chatList,\n },\n {\n path: \"/chat/room/:room_id\",\n is: \"chat-room-tag\",\n component: chatRoom,\n }\n];\n\n\n//project以下\nimport projectIndex from \"@tags/pages/project/index.riot\";\nimport projectDetail from \"@tags/pages/project/detail.riot\";\nimport projectDelivery from \"@tags/pages/project/delivery.riot\";\nimport projectHistory from \"@tags/pages/project/history.riot\";\nimport projectRewardsProject from \"@tags/parts/project/history/rewards-project.riot\";\nimport projectRewardsClient from \"@tags/parts/project/history/rewards-client.riot\";\nimport PaidSummary from \"@tags/pages/project/paid-summary.riot\";\nimport PaidSummaryDetail from \"@tags/pages/project/paid-summary-detail.riot\";\nimport projectInvoiceDetailForProject from \"@tags/pages/project/invoice/detail-for-project.riot\";\n\nconst projects = [{\n path: \"/project\",\n is: \"project-index-tag\",\n component: projectIndex,\n},\n {\n path: \"/project/detail/:project_id\",\n is: \"project-detail-tag\",\n component: projectDetail,\n },\n {\n path: \"/project/detail/:project_id/agreement\",\n is: \"project-detail-tag\",\n component: projectDetail,\n },\n {\n path: \"/project/delivery/:project_id\",\n is: \"project-delivery-tag\",\n component: projectDelivery,\n },\n {\n path: \"/project/history\",\n is: \"project-history-tag\",\n component: projectHistory,\n },\n {\n path: \"/project/history/rewards-project/:project_id\",\n is: \"project-rewards-project-tag\",\n component: projectRewardsProject,\n },\n {\n path: \"/project/history/rewards-client/:client_id\",\n is: \"project-rewards-worker-tag\",\n component: projectRewardsClient,\n },\n {\n path: \"/project/paid-summary\",\n is: \"paid-summary-tag\",\n component: PaidSummary,\n },\n {\n path: \"/project/paid-summary/detail/:target_year/:target_client_id\",\n is: \"paid-summary-derail-tag\",\n component: PaidSummaryDetail,\n },\n {\n path: \"/project/invoice/detail-for-project/:project_invoice_id\",\n is: \"project-invoice-detail-for-project-tag\",\n component: projectInvoiceDetailForProject,\n },\n];\n\n//info以下\nimport infoIndex from \"@tags/pages/info/index.riot\";\nimport infoBankAccount from \"@tags/pages/info/bank-account.riot\";\nimport infoBankAccountConfirm from \"@tags/pages/info/bank-account-confirm.riot\";\nimport infoBasicInformation from \"@tags/pages/info/basic-information.riot\";\nimport infoBasicInformationApplication from \"@tags/pages/info/basic-information-application.riot\";\nimport infoBasicInformationApplicationConfirm from \"@tags/pages/info/basic-information-application-confirm.riot\";\nimport infoInvoiceProvider from \"@tags/pages/info/invoice-provider.riot\";\n\nconst infos = [{\n path: \"/info\",\n is: \"info-index-tag\",\n component: infoIndex,\n},\n {\n path: \"/info/bank-account\",\n is: \"info-bank-account-tag\",\n component: infoBankAccount,\n },\n {\n path: \"/info/bank-account-confirm\",\n is: \"info-bank-account-confirm-tag\",\n component: infoBankAccountConfirm,\n },\n {\n path: \"/info/basic-information\",\n is: \"info-basic-information-tag\",\n component: infoBasicInformation,\n },\n {\n path: \"/info/basic-information-application\",\n is: \"info-basic-information-application-tag\",\n component: infoBasicInformationApplication,\n },\n {\n path: \"/info/basic-information-application-confirm\",\n is: \"info-basic-information-application-confirm-tag\",\n component: infoBasicInformationApplicationConfirm,\n },\n {\n path: \"/info/invoice-provider\",\n is: \"info-invoice-provider-tag\",\n component: infoInvoiceProvider\n }\n];\n\nconst pages = menus\n .concat(infos)\n .concat(chats)\n .concat(projects)\n .concat(ads);\n\nfor (const page of pages) {\n page.route = toRegexp(page.path, [], {endsWith: \"([#?].*)?\"});\n}\n\nconst routes = {\n pages,\n makePath: (name, param) =>\n toPath(pages.find((v) => v.is == name).path, param),\n};\n\nexport default routes;","\n\n
\n\n \n\n
\n\n
\n
\n \n
\n 適格請求書発行事業者についての情報更新
\n\n
\n
\n \n
\n\n
\n \n","\n
\n\n \n\n \n\n \n","
\n\n 適格請求書発行事業者
\n \n \n 適格請求書発行事業者ですか? | \n \n \n \n \n | \n
\n \n 登録番号 | \n \n \n \n\n \n \n \n T\n \n \n \n\n \n {state.error_message}\n \n\n \n \n | \n
\n
\n\n \n 個人情報(登録基本情報)をまだ登録されていない場合は、こちらから登録をお願いします\n
\n\n \n\n\n","\n\n
\n \n
\n \n

\n\n
\n ようこそ!\n
\n \n
\n 「EDILENT」は編集者、ライター専門のお仕事マッチングプラットフォームです。\n
\n
\n
\n
\n
\n スキルや職業経験のほか、自身の制作実績(ポートフォリオ)を登録して受注率アップ!\n
\n
\n 是非この機会に、事前登録をご利用ください。\n
\n
\n
\n
\n EDILENTのご利用にあたり、CROCO IDを取得いただいております。\n
\n
\n 下記リンクより、所定の項目をご記入のうえご登録をお願いいたします。\n
\n
\n (すでにCROCO IDを取得いただいている方は\n goLogin(e)}\">こちら\n からログインをお願いいたします。)\n
\n\n
\n
goRegister(e)}\"\n >\n CROCO IDを取得する\n
\n
\n
\n ※こちらはお仕事を受託する編集者・ライター様専用の画面となります。\n
\n 記事制作のご注文をご検討されているクライアント様は\n \n こちら\n \n をご確認ください。\n
\n
\n \n \n \n
\n \n\n \n\n","
\n\n \n \n
\n
「EDILENT」のご利用、誠にありがとうございます。
\nこちらは「EDILENT」でお仕事を受注される編集者・ライター様向けのページとなります。
\n既にご登録されている(現在ログインをしている)「CROCO ID」は記事制作等を発注するクライアント様として
\nご登録がされておりますので、記事制作等のご注文をご検討されている場合は「EDILENT for Client」をご利用ください。
\n
\n
\n\n\n\n","/** @format */\n\nimport { toRegexp, toPath } from \"@riotjs/route\";\nimport indexPage from \"@tags/pages/register/index.riot\";\nimport hasClientId from \"@tags/pages/register/has-client-id.riot\";\nimport agreement from \"@tags/pages/register/agreement.riot\";\nimport complete from \"@tags/pages/register/complete.riot\";\n\nconst pages = [\n {\n path: \"/register\",\n is: \"index-tag\",\n component: indexPage,\n },\n {\n path: \"/register/has-client-id\",\n is: \"has-client-id-tag\",\n component: hasClientId,\n },\n {\n path: \"/register/agreement\",\n is: \"agreement-tag\",\n component: agreement,\n },\n {\n path: \"/register/complete\",\n is: \"complete-tag\",\n component: complete,\n },\n];\n\nfor (const page of pages) {\n page.route = toRegexp(page.path, [], { endsWith: \"([#?].*)?\" });\n}\n\nconst routes = {\n pages,\n makePath: (name, param) =>\n toPath(pages.find((v) => v.is == name).path, param),\n};\n\nexport default routes;\n","\n\n
\n\n\n \n \n
\n \n\n

\n\n
ご利用規約
\n \n
\n
\n \n
\n
= 20220401} class=\"contents_block detail\" style=\"padding: 1em ;margin: 0 auto; text-align: left;width:70%;height:300px; overflow-y: scroll; border: 1px solid #000\">\n \n
\n
\n\n
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n
\n
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\n\n
\n\n\n
\n
\n\n \n \n
\n\n\n\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see
\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n var parts = str.split('.');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n\n if (options.require_tld) {\n var tld = parts.pop();\n\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAscii;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable no-control-regex */\nvar ascii = /^[\\x00-\\x7F]+$/;\n/* eslint-enable no-control-regex */\n\nfunction isAscii(str) {\n (0, _assertString.default)(str);\n return ascii.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n\n options = (0, _merge.default)(options, default_url_options);\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n\n split[0] = url.substr(2);\n }\n\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n\n auth = split.shift();\n\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toBoolean;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction toBoolean(str, strict) {\n (0, _assertString.default)(str);\n\n if (strict) {\n return str === '1' || str === 'true';\n }\n\n return str !== '0' && str !== 'false' && str !== '';\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction toDate(date) {\n (0, _assertString.default)(date);\n date = Date.parse(date);\n return !isNaN(date) ? new Date(date) : null;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toFloat;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction toFloat(str) {\n (0, _assertString.default)(str);\n return parseFloat(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInt;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction toInt(str, radix) {\n (0, _assertString.default)(str);\n return parseInt(str, radix || 10);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.commaDecimal = exports.dotDecimal = exports.arabicLocales = exports.englishLocales = exports.decimal = exports.alphanumeric = exports.alpha = void 0;\nvar alpha = {\n 'en-US': /^[A-Z]+$/i,\n 'bg-BG': /^[А-Я]+$/i,\n 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[A-ZÆØÅ]+$/i,\n 'de-DE': /^[A-ZÄÖÜß]+$/i,\n 'el-GR': /^[Α-ω]+$/i,\n 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'nb-NO': /^[A-ZÆØÅ]+$/i,\n 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[A-ZÆØÅ]+$/i,\n 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,\n 'ru-RU': /^[А-ЯЁ]+$/i,\n 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[A-ZÅÄÖ]+$/i,\n 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,\n 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/\n};\nexports.alpha = alpha;\nvar alphanumeric = {\n 'en-US': /^[0-9A-Z]+$/i,\n 'bg-BG': /^[0-9А-Я]+$/i,\n 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[0-9A-ZÆØÅ]+$/i,\n 'de-DE': /^[0-9A-ZÄÖÜß]+$/i,\n 'el-GR': /^[0-9Α-ω]+$/i,\n 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'nb-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,\n 'ru-RU': /^[0-9А-ЯЁ]+$/i,\n 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,\n 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,\n 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/\n};\nexports.alphanumeric = alphanumeric;\nvar decimal = {\n 'en-US': '.',\n ar: '٫'\n};\nexports.decimal = decimal;\nvar englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];\nexports.englishLocales = englishLocales;\n\nfor (var locale, i = 0; i < englishLocales.length; i++) {\n locale = \"en-\".concat(englishLocales[i]);\n alpha[locale] = alpha['en-US'];\n alphanumeric[locale] = alphanumeric['en-US'];\n decimal[locale] = decimal['en-US'];\n} // Source: http://www.localeplanet.com/java/\n\n\nvar arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];\nexports.arabicLocales = arabicLocales;\n\nfor (var _locale, _i = 0; _i < arabicLocales.length; _i++) {\n _locale = \"ar-\".concat(arabicLocales[_i]);\n alpha[_locale] = alpha.ar;\n alphanumeric[_locale] = alphanumeric.ar;\n decimal[_locale] = decimal.ar;\n} // Source: https://en.wikipedia.org/wiki/Decimal_mark\n\n\nvar dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];\nexports.dotDecimal = dotDecimal;\nvar commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-FR', 'it-IT', 'ku-IQ', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA'];\nexports.commaDecimal = commaDecimal;\n\nfor (var _i2 = 0; _i2 < dotDecimal.length; _i2++) {\n decimal[dotDecimal[_i2]] = decimal['en-US'];\n}\n\nfor (var _i3 = 0; _i3 < commaDecimal.length; _i3++) {\n decimal[commaDecimal[_i3]] = ',';\n}\n\nalpha['pt-BR'] = alpha['pt-PT'];\nalphanumeric['pt-BR'] = alphanumeric['pt-PT'];\ndecimal['pt-BR'] = decimal['pt-PT']; // see #862\n\nalpha['pl-Pl'] = alpha['pl-PL'];\nalphanumeric['pl-Pl'] = alphanumeric['pl-PL'];\ndecimal['pl-Pl'] = decimal['pl-PL'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rtrim;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction rtrim(str, chars) {\n (0, _assertString.default)(str); // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n\n var pattern = chars ? new RegExp(\"[\".concat(chars.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), \"]+$\"), 'g') : /\\s+$/g;\n return str.replace(pattern, '');\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ltrim;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ltrim(str, chars) {\n (0, _assertString.default)(str); // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n\n var pattern = chars ? new RegExp(\"^[\".concat(chars.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), \"]+\"), 'g') : /^\\s+/g;\n return str.replace(pattern, '');\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","/** @format */\n\nimport menuRoutes from \"@model/menu-routes.js\";\nimport registerRoutes from \"@model/register-routes.js\";\n\n// 「戻る」ルートがある場合はリロード\nwindow.addEventListener(\"popstate\", () => {\n const url = new URL(location.href);\n if (menuRoutes.pages.find((v) => v.route.exec(url.pathname))) {\n location.reload();\n }\n if (registerRoutes.pages.find((v) => v.route.exec(url.pathname))) {\n location.reload();\n }\n});\n"],"sourceRoot":""}